0

我有一个如下的简单脚本,用于expectrsync 一些数据(通过 ssh)。代码如下:

local_path1="/root/accordingtojim.txt"
username="ih4d35"
ip="10.0.0.152"
port="22"
password="t3tr@h3dr0n"

echo "$local_path1 $username $ip $port $password"

expect -c 'spawn rsync -avz -e "ssh -p $port" $local_path1 $username\@$ip:~/; expect '*?assword:*' {send \"$password\r\"; interact};'

这是我得到的错误:

can't read "port": no such variable
    while executing
"spawn rsync -avz -e "ssh -p $port" $local_path1 $username\@$ip:~/"

echo声明工作正常。

我究竟做错了什么?

4

1 回答 1

3

Shell 变量不会在单引号之间展开,所以去掉它们并用转义的引号替换嵌套的引号:

expect -c "spawn rsync -avz -e \"ssh -p $port\" $local_path1 $username\@$ip:~/; expect '*?assword:*' {send \"$password\r\"; interact};"
于 2013-10-29T09:23:22.470 回答