例如,假设我有 script1.sh,我需要调用 script2.sh。 script2.sh 能够使用 script1.sh 定义的任何变量吗?如果是,如果我更进一步并在 script2.sh 中调用 script3.sh,是否可以访问 script1.sh 变量?
如果不是,需要做什么才能实现这一目标?
可以通过三种方式使变量可供另一个脚本启动的脚本使用:
标记要导出的变量(例如使用export
声明时或声明后使用的关键字,或使用 -x
的选项declare
, local
or typeset
) ;
将变量的赋值作为正在执行的命令的前缀(例如varname=1 command and args
),仅用空格分隔;
调用子脚本source
or .
,这会导致脚本由当前 shell 读取和解释,而不是作为单独的进程启动,因此使当前上下文的所有变量(包括局部变量)可供子脚本使用。
请注意,将变量标记为导出将导致该变量被复制到子进程的内存空间,然后该副本将独立于父 shell 的变量:在子 shell 中修改它不会更改父 shell 中的值。
Using source
or .
是导致子脚本修改父脚本中的变量的唯一方法,因为子进程永远无法访问其父进程的内存空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)