我的意图是使用当前脚本文件中其他脚本文件的变量。
我正在使用 source
例如,
我有两个文件,test.sh
并且test1.sh
在中test.sh
,我有:
hello="hello world"
在中test1.sh
,我正在这样做:
source test.sh
echo "$hello"
但是,如果我有什么命名的变量hello
中test1
?
好吧,我发现,如果我source
在这样的变量声明之后:
hello= "Good bye world"
source test.sh
echo "$hello"
我会得到,
hello world
但是如果这样做,
source test.sh
hello= "Good bye world"
echo "$hello"
我会得到,
Good bye world
对我来说,这对我来说是非常不便的,因为我必须照顾我正在使用的位置source
,如果我想在这两个变量之间切换,可能需要一次又一次地这样做。
如何解决呢?
例如,我想做这样的事情,
echo $hello(of the localone) $hello(of the sourced one)
可能吗?
答案是否定的,这是不可能的。
Shell没有提供任何机制来处理变量的名称空间冲突。
注意:korn-shell确实提供了一个命令(不是POSIX的一部分,其他人不支持) namespace
来处理此特定问题。在unix.stackexchange这个问题中对此进行了解释
echo 'function hi { echo Ahoj, světe\!; }' > czech.ksh
echo 'function hi { echo Hello, World\!; }' >english.ksh
namespace english { . ./english.ksh; }
namespace czech { . ./czech.ksh; }
.english.hi; .czech.hi
在比较不同的unix shell
和旧的bash FAQ时,将提到此行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句