我有一个脚本test
#! /bin/bash
sleep 60
echo hello
我通过将其设置为可执行文件来运行它./test
,并且当它运行 sleep 命令时,我将其更改为
#! /bin/bash
sleep 60
echo hello!!
输出是hello!!
.我想知道为什么不呢hello
?
我怎样才能让它输出hello
而不管以后的变化?
答案1
这是适合您的情况的解决方案。
将脚本分解为函数,每次调用函数时都会source
从单独的文件中调用它。然后您可以随时编辑这些文件,并且您的运行脚本将在下次获取时获取更改。
foo() {
source foo.sh
}
foo
测试
我创建了两个脚本callee.sh
,called.sh
如下所示。
#The contents of callee.sh script is as below.
callee.sh
foo() {
source called.sh
}
foo
#The contents of called.sh script is as below.
called.sh
#! /bin/bash
sleep 60
echo hello
现在,我执行callee.sh
它又调用我的called.sh
脚本。基本上,called.sh
这是我们将动态更改的脚本。
现在,当callee.sh
执行时,我打开另一个外壳并将内容更改为,
#! /bin/bash
sleep 60
echo hello
echo "I added more contents here"
callee.sh
现在,在结束后我调用脚本的第一个 shell 中sleep
,我得到的输出是,
hello
正如您所看到的,我没有I added more contents here
在输出中得到所需的最终结果。
参考