我试图将环境变量传递给我的shell脚本,然后回显传入的内容。在此示例中,$ HOME是已经设置的环境变量。
./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 my_user@Server2 "echo Server got: $my_var" 

我目前的输出是:
You sent: /home/blah/usr 
Server got: /home/blah/usr 

我想要的只是生成的ssh命令:
Server got: /home/superblah/newusr 

谢谢。

请您参考如下方法:

您可以通过将变量用单引号引起来来防止解析变量

./my_script.ksh '$HOME' 

我这样尝试过:
[host1]$ echo $HOME 
/home/user1 
[host1]$ ssh user2@host2 echo '$HOME' 
/home/user2 
[host1]$ 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!