bash – 将所有变量从一个shellscript传递到另一个?
所以让我说我有一个shellscript / bash脚本test.sh
具有: #!/bin/bash # TESTVARIABLE=hellohelloheloo ./test2.sh 我的test2.sh看起来像这样 #!/bin/bash # echo ${TESTVARIABLE} 这不工作。我不想传递所有的变量作为参数,因为imho这是overkill。有不同的方法吗?
你基本上有两个选择:
>在执行第2个脚本之前,使该变量成为一个环境变量(导出TESTVARIABLE)。 更新: 要使用导出设置环境变量,可以使用现有变量: A=10 # ... export A 这应该在bash和sh中工作。 bash还允许它组合如下: export A=10 这也可以在我的sh(这恰好是bash,你可以使用echo $ SHELL检查)。但我不相信那保证一切正常工作,所以最好玩安全和分离。 以这种方式导出的任何变量将在您执行的脚本中可见,例如: 灰: #!/bin/sh MESSAGE="hello" export MESSAGE ./b.sh b.sh: #!/bin/sh echo "The message is: $MESSAGE" 然后: $ ./a.sh The message is: hello 事实上,这些都是shell脚本也只是偶然的。环境变量可以传递给你执行的任何进程,例如如果我们使用python,它可能看起来像: 灰: #!/bin/sh MESSAGE="hello" export MESSAGE ./b.py b.py: #!/usr/bin/python import os print 'The message is:',os.environ['MESSAGE'] 采购: 相反,我们可以这样来源: 灰: #!/bin/sh MESSAGE="hello" . ./b.sh b.sh: #!/bin/sh echo "The message is: $MESSAGE" 然后: $ ./a.sh The message is: hello 这或多或少“直接导入”b.sh的内容,并在同一个shell中执行它。注意,我们不必导出变量来访问它。这隐含地共享所有的变量,以及允许其他脚本在shell中添加/删除/修改变量。当然,在这个模型中,你的脚本应该是相同的语言(sh或bash)。为了举例说明我们如何来回传递消息: 灰: #!/bin/sh MESSAGE="hello" . ./b.sh echo "[A] The message is: $MESSAGE" b.sh: #!/bin/sh echo "[B] The message is: $MESSAGE" MESSAGE="goodbye" 然后: $ ./a.sh [B] The message is: hello [A] The message is: goodbye 这在bash中同样好用。它还使您可以轻松地共享更多复杂的数据,这些数据不能表达为环境变量(至少没有您的部分),例如数组或关联数组。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |