Xan*_*der 39 linux variables shell terminal
我有两个脚本1.sh和2.sh.
1.sh如下:
#!/bin/sh
variable="thisisit"
export variable
Run Code Online (Sandbox Code Playgroud)
2.sh如下:
#!/bin/sh
echo $variable
Run Code Online (Sandbox Code Playgroud)
根据我读到的内容,这样做(导出)可以从一个shell脚本中访问另一个shell脚本中的变量.但这不适用于我的脚本.有人可以帮忙吗 提前致谢.
lin*_*asy 86
如果你正在执行你的文件sh 1.sh,./1.sh那么你正在子shell中执行它.
如果您希望在当前shell中进行更改,则可以执行以下操作:
. 1.sh
# OR
source 1.sh
Run Code Online (Sandbox Code Playgroud)
请考虑浏览参考文档.
"当使用source[或.]运行脚本时,它会在现有shell中运行,脚本完成后,脚本创建或修改的任何变量都将保持可用.相反,如果脚本同样运行filename,则单独的子shell(带有将产生完全独立的变量集来运行脚本."
export将变量放入执行shell的环境中,以便将其传递给脚本执行的进程,但不传递给调用脚本或任何其他进程的进程.尝试执行
#!/bin/sh
FOO=bar
env | grep '^FOO='
Run Code Online (Sandbox Code Playgroud)
和
#!/bin/sh
FOO=bar
export FOO
env | grep '^FOO='
Run Code Online (Sandbox Code Playgroud)
看到的效果export.
为了充分利用变1.sh向2.sh,或者调用2.sh自1.sh或进口1.sh的2.sh:
#!/bin/sh
. ./1.sh
echo $variable
Run Code Online (Sandbox Code Playgroud)