我试图将变量从本地服务器(location1)传递到远程服务器(location2)。该代码的目的是从预定义的位置从远程服务器复制文件。简单地说,我想使用预定义的路径将文件从location2复制到location1,其中location1在本地服务器上,location2是远程服务器。参见代码段:
$location1=somewhere/on/local_server
$location2=somewhere/on/remote_server
sshpass -p "password" ssh username@74.11.11.11 'su -lc "cp -r $location2 $location1";'
我得到的错误是$location1和$location2都未定义。此外,我不想手动输入位置路径,因为它们可以随时更改,如果手动完成,在代码中更改它们将是一种痛苦。
你可以这样做:
sshpass -p "password" ssh username@74.11.11.11 "su -lc "cp -r $location2 $location1""
您可以尝试让远程shell从输入中读取变量:
location1=somewhere/on/local_server
location2=somewhere/on/remote_server
printf '%sn%sn' "$location1" "$location2" |
sshpass -p "password" ssh username@74.11.11.11 'read location1; read location2; su -lc "cp -r "$location2" "$location1"";'
注意我给变量加了双引号。即使路径名上有空格,它也可以工作。
您的location1/2声明有语法错误。在赋值时不能使用"$"。这就是为什么你会得到一个未定义的值:
location1=somewhere/on/local_server
location2=somewhere/on/remote_server