例如,假设我有 script1.sh,我需要调用 script2.sh。 script2.sh 能够使用 script1.sh 定义的任何变量吗?如果是,如果我更深入地在 script2.sh 中调用 script3.sh,是否可以访问 script1.sh 变量?
如果没有,需要做什么才能实现这一目标?
最佳答案
可以通过三种方式使变量可供另一个脚本启动的脚本使用:
标记要导出的变量(例如在声明时或声明后使用
export
关键字,或者使用x
、declare
或local
的 -typeset
选项);将变量的赋值作为正在执行的命令的前缀(例如
varname=1 command and args
),仅用空格分隔;使用
source
调用子脚本或.
,这会导致脚本由当前 shell 读取和解释,而不是作为单独的进程启动,因此使当前上下文的所有变量(包括局部变量)可供子脚本使用。
请注意,将变量标记为导出将导致该变量被复制到子进程的内存空间,然后该副本将独立于父 shell 的变量:在子进程中修改它不会更改其值在父级中。
使用source
或.
这是导致子脚本修改父脚本中变量的唯一方法,因为子进程永远无法访问其父进程的内存空间。
关于linux - 当在另一个脚本中运行bash脚本时,父脚本中定义的所有变量是否都会继承给子脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43606290/