我有一个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
的值?
答案 0 :(得分:1)
变量不会转移到远程计算机。您可以在通过ssh发送的代码中扩展变量,但是您必须非常小心,因为它为不受控制的代码执行打开了大门:
#!/bin/bash
foo=$1
ssh user@host.com '
echo In host
if [ "'"$foo"'" == "yes" ]; then
echo "Foo!"
fi
'
现在想象(不要尝试)如果foo='$(rm -rf /)'
会发生什么。