我将变量从一个shell脚本传递到另一个正在另一个远程服务器上执行的shell脚本。
脚本1
echo "Identification No."
read id
export id
ssh atul@10.95.276.286 'bash -s' < data_file.sh
脚本2
echo "ID is ---- "$id
cd /abc/xyz/data/
cat data_abcxyz.txt|grep '|$id|'|wc -l
通过这种方式,即使id在第二个脚本中也为空,我也无法获得任何输出。
我也试过
ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"
但没有输出。
非常感谢任何帮助。我正在使用unix AIX。
答案 0 :(得分:1)
export
绝对不会影响完全不同的主机...它甚至不会影响在当前主机上运行的另一个shell。
你的第二次尝试更好,如果你的脚本正在检查位置参数,它甚至可以工作,但它不是。 (在这种情况下它甚至可能不起作用,因为我完全不确定命令行参数是否会通过ssh
和bash -s
通过脚本。
你可以做更多的事情:
ssh atul@10.95.276.286 "bash -s $id" < data_file.sh
直接将参数传递给远程bash
,但您的脚本仍然需要使用位置参数,而不是期望命名变量已经存在。
答案 1 :(得分:1)
导出不会对远程脚本的环境产生任何影响。 您可以通过在实际命令之前在命令行上指定env变量来设置远程脚本的环境,您也可以将其用于本地命令。
ssh atul@10.95.276.286 "id=$id bash -s" < data_file.sh
如果你通过&#34; $ id&#34;这样:
ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"
它将成为您脚本的第一个参数,即AKA&#34; $ 1&#34;并且您可以通过这种方式从脚本中访问它。
请注意{&#34;脚本2&#34;中的'|$id|'
将被解释为文字字符串,因为您使用的是单引号。