我想将环境变量传递给我的shell脚本,然后回显出我传入的内容。在本例中,$ HOME是已设置的环境变量。通过ssh传递环境变量以进行远程扩展
./my_script.ksh $HOME
#! /usr/bin/ksh
my_var=${1}
echo "You sent: ${my_var}"
我希望我的输出为You sent: $HOME
,而是它正在评估它,是生产You Sent: /home/blah/usr
这样做的一点是,我打算做,我需要一个SSH命令通过$ my_var太未评估(也就是$ HOME),因为每个服务器上的$ HOME是一个不同的值,而对于SSH命令,我希望它使用来自服务器的SSH值。所以希望只是通过它在SSH期间,它会评估正确
这是我想要发生的一个例子。让我们假设$ HOME已经被设置在Server1和Server2,如:
Server1 $HOME: /home/blah/usr
Server2 $HOME: /home/superblah/newusr
在Server1执行my_script.ksh $HOME
脚本是与上面的一个额外的行:
ssh [email protected] "echo Server got: $my_var"
什么我输出目前是:
You sent: /home/blah/usr
Server got: /home/blah/usr
我想要的只是ssh com要生产:
Server got: /home/superblah/newusr
谢谢。
要清楚,[your ** real ** question](http://stackoverflow.com/questions/42400222/use涉及SCP而不是SSH的-remote-environment-variables-value-in-scp-path)是非常相关的区别。 –
另外,使用'$ HOME'有点令人误解 - 当SCP或SSH连接成为$ HOME时,它会依赖于默认远程目录的答案,而您的真实用例需要更多的参与。 –
顺便说一句,我在这里写代码ksh93 - 如果你切换到bash,你想用'printf -v foo'%q'替换'foo = $(printf'%q'...)'' ......“,但其他情况不会改变。另一方面,如果你使用ksh的第三方克隆而不是真实的东西,我的第一个建议是切换 - 真正的ksh(如果你想要快速,有效和稳定的东西)或bash(用于不是那么快,而是积极维护的 - 而且在目前的4.x版中,即使语法不同,也会对功能非常感兴趣。 –