Bash脚本变量未通过SSH传递

时间:2019-07-04 10:44:50

标签: bash

我有一个ssh到服务器的bash脚本,并根据变量的状态执行任务:

#!/bin/bash

foo=$1
ssh user@host.com '
echo In host
if [ "$foo" == "yes" ]; then
   echo "Foo!"
fi
'

当我运行sh script.sh yes时,尽管ssh命令有效,但条件条件的计算结果为false。如果我echo $foo,我可以看到它-它打印一个空行。如何在foo命令中访问ssh的值?

1 个答案:

答案 0 :(得分:1)

变量不会转移到远程计算机。您可以在通过ssh发送的代码中扩展变量,但是您必须非常小心,因为它为不受控制的代码执行打开了大门:

#!/bin/bash

foo=$1
ssh user@host.com '
echo In host
if [ "'"$foo"'" == "yes" ]; then
   echo "Foo!"
fi
'

现在想象(不要尝试)如果foo='$(rm -rf /)'会发生什么。