在unix aix中将变量从一个脚本传递到另一个脚本

时间:2015-02-17 14:13:56

标签: bash shell unix sh aix

我将变量从一个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。

2 个答案:

答案 0 :(得分:1)

一台主机上的

export绝对不会影响完全不同的主机...它甚至不会影响在当前主机上运行的另一个shell。

你的第二次尝试更好,如果你的脚本正在检查位置参数,它甚至可以工作,但它不是。 (在这种情况下它甚至可能不起作用,因为我完全不确定命令行参数是否会通过sshbash -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|'将被解释为文字字符串,因为您使用的是单引号。