我有两个脚本1.sh和2.sh。
1.sh如下:
#!/bin/sh
variable="thisisit"
export variable
2.sh如下:
#!/bin/sh
echo $variable
根据我读到的内容,这样做(导出)可以从一个shell脚本中访问另一个shell脚本中的变量。但这不适用于我的脚本。有人可以帮忙吗提前谢谢。
答案 0 :(得分:79)
如果您正在执行sh 1.sh
或./1.sh
等文件,那么您将在子shell中执行它。
如果您希望在当前shell中进行更改,可以执行以下操作:
. 1.sh
# OR
source 1.sh
请考虑浏览reference-documentation。
“当使用source
[或.
]运行脚本时,它在现有shell中运行,脚本完成后,脚本创建或修改的任何变量都将保持可用。如果脚本像filename
那样运行,则会生成一个单独的子shell(带有一组完全独立的变量)来运行脚本。“
答案 1 :(得分:6)
export
将一个变量放在执行shell的环境中,因此它被传递给脚本执行的进程,但不会传递给调用脚本或任何其他进程的进程。尝试执行
#!/bin/sh
FOO=bar
env | grep '^FOO='
和
#!/bin/sh
FOO=bar
export FOO
env | grep '^FOO='
查看export
的效果。
要从1.sh
到2.sh
获取变量,请从2.sh
拨打1.sh
,或在1.sh
中导入2.sh
:
#!/bin/sh
. ./1.sh
echo $variable