我有两个脚本 1.sh 和 2.sh。
1.sh如下:
#!/bin/sh
variable="thisisit"
export variable
2.sh如下:
#!/bin/sh
echo $variable
根据我阅读的内容,这样做(导出)可以从另一个 shell 脚本访问变量。但这在我的脚本中不起作用。有人可以帮忙吗。提前致谢。
如果你正在执行你的文件sh 1.sh
,./1.sh
那么你正在一个子shell中执行它。
如果您希望在当前 shell 中进行更改,您可以执行以下操作:
. 1.sh
# OR
source 1.sh
请考虑通过参考文档。
“当使用source
[或.
] 运行脚本时,它在现有的 shell 中运行,脚本创建或修改的任何变量在脚本完成后仍然可用。相反,如果脚本运行为filename
,则单独的子 shell(带有完全独立的变量集)将被生成以运行脚本。”
export
将变量放在执行 shell 的环境中,以便将其传递给脚本执行的进程,但不会传递给调用脚本的进程或任何其他进程。尝试执行
#!/bin/sh
FOO=bar
env | grep '^FOO='
和
#!/bin/sh
FOO=bar
export FOO
env | grep '^FOO='
看看效果export
。
要从 to 获取变量1.sh
,2.sh
请调用2.sh
from1.sh
或 import 1.sh
in 2.sh
:
#!/bin/sh
. ./1.sh
echo $variable