为什么我的平等字符串不相等?

时间:2015-05-10 18:20:39

标签: bash expect

我发现很多相同的问题,但没有解决方案可以帮助我。

listingInOrder.sh

set user [lindex $argv 0]
set dir [lindex $argv 1]
set password [lindex $argv 2]
set N [lindex $argv 3]
spawn ssh $user@pool$N.physik.hu-berlin.de ls -1tr $dir | tail -1
expect "Password:"
send "$password\r"
interact

mainfile.sh

filelocal=`ls -1tr $localdir | tail -1`
fileremote=`expect listingInOrder.sh $user $remotedir $password $N | tail -1`
if [[ "$filelocal" != "$fileremote" ]]; then
   echo "not equal"
   echo "$filelocal"
   echo "$fileremote"
fi

但输出是:

not equal
blatt3A2.m
blatt3A2.m

所以名字是平等的。这有什么问题?

2 个答案:

答案 0 :(得分:0)

删除$fileremote末尾的空格:

fileremote=`expect listingInOrder.sh $user $remotedir $password $N | tail -1`
fileremote=${fileremote% }

答案 1 :(得分:0)

最后我找到了解决方案。不知怎的,\ r \ n就在String的末尾。

print r'\\' # gives '\\'
print r'\\\' # gives SyntaxError

给了我以下字符串输出为hex:

$ HEXVAL=$(xxd -pu <<< "$fileremote")
$ echo "$HEXVAL"

0d0a显示为\ r。

626c6174743341322e6d0d0a

修剪了字符串,现在它可以正常工作。