我有以下shell脚本。
脚本1
#!/bin/bash
foo() {
echo "foo from Script1"
}
foo1() {
echo "foo1 from Script1"
}
source script2
foo
fool
脚本2#!/bin/bash
foo() {
echo "foo from Script2"
}
foo1() {
echo "foo1 from Script2"
}
我得到以下输出:预期输出为
我知道源命令在这里玩了。是否有任何方法可以将控件带回Script1或任何其他替代方法来实现此目的?
最佳答案
如果您希望script2的来源仅影响foo的执行,则一种可能是将其放在子 shell 中:
( . script2 ; foo ; )
foo1
输出:
foo from Script2
foo1 from Script1