我有两个脚本1.sh和2.sh。1.sh 如下:
#!/bin/sh variable="thisisit" export variable
2.sh 如下:
#!/bin/sh echo $variable
根据我所读到的,这样做(导出)可以从一个shell脚本访问另一个shell脚本中的变量,但这在我的脚本中不起作用。
b4wnujal1#
如果你正在执行sh 1.sh或./1.sh这样的文件,那么你是在一个子shell中执行它。如果希望在当前Shell中进行更改,可以执行以下操作:
sh 1.sh
./1.sh
. 1.sh # OR source 1.sh
请考虑通过reference-documentation。
source
.
filename
kdfy810k2#
export在执行shell的环境中放置一个变量,以便将其传递给脚本执行的进程,而不是调用脚本的进程或任何其他进程。
export
#!/bin/sh FOO=bar env | grep '^FOO='
以及
#!/bin/sh FOO=bar export FOO env | grep '^FOO='
来观察export的影响。要获取从1.sh到2.sh的变量,请从1.sh调用2.sh,或将1.sh导入2.sh:
1.sh
2.sh
#!/bin/sh . ./1.sh echo $variable
2条答案
按热度按时间b4wnujal1#
如果你正在执行
sh 1.sh
或./1.sh
这样的文件,那么你是在一个子shell中执行它。如果希望在当前Shell中进行更改,可以执行以下操作:
请考虑通过reference-documentation。
source
[或.
]运行脚本时,脚本在现有shell中运行,脚本创建或修改的任何变量在脚本完成后仍将可用。相反,如果脚本仅作为filename
运行,则将生成单独的子shell(具有完全单独的变量集)来运行脚本。"*kdfy810k2#
export
在执行shell的环境中放置一个变量,以便将其传递给脚本执行的进程,而不是调用脚本的进程或任何其他进程。以及
来观察
export
的影响。要获取从
1.sh
到2.sh
的变量,请从1.sh
调用2.sh
,或将1.sh
导入2.sh
: