2013-10-29 31 views
0

我有一個簡單的腳本,如下所示,它使用expect來rsync一些數據(通過ssh)。代碼如下:bash和expect - 在rsyncing時不佔用端口

local_path1="/root/accordingtojim.txt" 
username="ih4d35" 
ip="10.0.0.152" 
port="22" 
password="[email protected]" 

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語句工作正常不過。

我在做什麼錯?

回答

3

的Shell變量不是單引號之間展開,因此擺脫他們與那些逃脫替換嵌套引用:

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