如何使用ssh和bash脚本将局部变量传递给远程

时间:2015-05-25 13:01:43

标签: bash ssh

我有两台服务器A和B(远程服务器),需要将文件从A复制到B远程服务器。在复制之前我需要删除远程服务器中的文件取决于我从本地服务器输入的变量。

复制命令

scp -r file test@host:/home/test/$name1/$name2.pdf

此处$name1$name2是从本地计算机获取的变量,值会有所不同

上面的命令工作正常

对于移动命令

if [ "$name1" = "RAM" ]
then
    ssh test@host 'mv /home/test/$name1/*.pdf /home/test/$name1/backup'

这不起作用

您能否建议我如何存档。

1 个答案:

答案 0 :(得分:3)

你的问题是引用:

if [ "$name1" = "RAM" ]
then
    ssh test@host "mv /home/test/$name1/*.pdf /home/test/$name1/backup"
fi

也就是说,用双引号替换单引号。

双引号允许变量扩展,而单引号不允许任何扩展。请注意,两个引号都不会扩展通配符,因此它们将在远程计算机上展开(可能就是您所需要的)。

如果你使用double [[ ]],那么你不需要引用条件变量(即使它包含嵌入的空格):

if [[ $name1 == RAM ]]
then
    ssh test@host "mv /home/test/$name1/*.pdf /home/test/$name1/backup"
fi