Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash和expect-dons';重新同步时,请不要使用端口_Bash_Ssh_Expect_Rsync - Fatal编程技术网

bash和expect-dons';重新同步时,请不要使用端口

bash和expect-dons';重新同步时,请不要使用端口,bash,ssh,expect,rsync,Bash,Ssh,Expect,Rsync,我有一个简单的脚本,它使用expect来rsync一些数据(通过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" $lo

我有一个简单的脚本,它使用
expect
来rsync一些数据(通过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
语句运行良好


我做错了什么?

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

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

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

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

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

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

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

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