放入单行时,SSH命令链不起作用

时间:2017-10-18 10:30:55

标签: bash ssh

我有以下完整的命令链:

ssh Module
cd /MODULE_DIR/workspace/repository/
LATEST=`ls -tr *.snapshot | head -1`
mkdir fresh
cp ${LATEST} fresh
exit

我想把它放到一个bash脚本中:

ssh Module "cd /MODULE_DIR/workspace/repository/ && LATEST=`ls -tr *.snapshot | head -1` && mkdir fresh && cp \${LATEST} fresh"

但它输出错误:

ls: cannot access '*.snapshot': No such file or directory
cp: missing destination file operand after 'fresh'
Try 'cp --help' for more information.

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

尝试在SSH命令中使用单引号而不是双引号。

Bash的order of expansions将尝试根据您运行它的计算机上的变量赋值在双引号内扩展这些变量。

命令中的变量可能在本地为空;你可以通过在第一个引用之前添加一个echo来测试它,并让服务器回显它接收的命令。

将它包装在单引号中应该会使您的本地终端不会尝试扩展该变量,并让您连接的框来处理它。