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

Passing variable from one script to another in unix aix

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

一台主机上的

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

你的第二次尝试更好,如果你的脚本正在检查位置参数但它不是,它甚至可能会起作用。 (在那种情况下它甚至可能不起作用,因为我根本不确定命令行参数是否会通过 sshbash -s.

传递到脚本

您也许可以做更多类似的事情:

ssh atul@10.95.276.286 "bash -s $id" < data_file.sh

直接将参数传递给远程 bash,但您的脚本仍需要使用位置参数并且不期望命名变量已经存在。

导出不会对远程脚本的环境产生任何影响。 您可以通过在实际命令之前在命令行上指定环境变量来设置远程脚本的环境,顺便说一下,您也可以将其用于本地命令。

 ssh atul@10.95.276.286 "id=$id bash -s" < data_file.sh

如果您以这种方式传递“$id”:

 ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"

这将是您脚本的第一个参数,又名“$1”,您将能够通过这种方式从您的脚本中访问它。

请注意,"Script 2" 中的 '|$id|' 将被解释为文字字符串,因为您使用的是单引号。