Bash 在unix aix中将变量从一个脚本传递到另一个脚本
我将变量从一个shell脚本传递到另一个shell脚本,该脚本正在另一个远程服务器上执行 脚本1Bash 在unix aix中将变量从一个脚本传递到另一个脚本,bash,shell,unix,sh,aix,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 通过这种方式,即使第二个脚本中的id也为null,我也无法获得任何输出 我也试过了 ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id" sshat
echo "Identification No."
read id
export id
ssh atul@10.95.276.286 'bash -s' < data_file.sh
通过这种方式,即使第二个脚本中的id也为null,我也无法获得任何输出
我也试过了
ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"
sshatul@10.95.276.286“bash-s”
但没有产出
在此方面的任何帮助都将不胜感激。我正在使用unix AIX。在一台主机上导出绝对不会影响完全不同的主机。。。它甚至不会影响当前主机上运行的另一个shell 如果脚本正在检查位置参数,那么您的第二次尝试会更好,甚至可能会起作用,但事实并非如此。(在这种情况下它甚至可能不起作用,因为我根本不确定命令行参数是否能够通过
ssh
和bash-s
传递到脚本
您可能可以执行以下操作:
ssh atul@10.95.276.286 "bash -s $id" < data_file.sh
sshatul@10.95.276.286“bash-s$id”
要将参数直接传递给远程
bash
,脚本仍需要使用位置参数,并且不希望命名变量已经存在。导出不会对远程脚本的环境产生任何影响。
您可以通过在实际命令之前在命令行上指定env变量来设置远程脚本的环境,顺便说一句,您也可以在本地命令中使用env变量
ssh atul@10.95.276.286 "id=$id bash -s" < data_file.sh
sshatul@10.95.276.286“id=$id bash-s”
如果以这种方式传递“$id”:
ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"
sshatul@10.95.276.286“bash-s”
它将是脚本的第一个参数,也就是“$1”,您可以通过这种方式从脚本访问它
请注意,“脚本2”中的“|$id |”
将被解释为文本字符串,因为您使用的是单引号
ssh atul@10.95.276.286 'bash -s' < data_file.sh "$id"