#beginning of bashscript1.sh
source bashscript2.sh
echo $variable
Run Code Online (Sandbox Code Playgroud)
这是源文件:
#beginning of bashscript2.sh
rm -f bashscript2.sh
variable = "integer of some kind"
Run Code Online (Sandbox Code Playgroud)
如何处理bash脚本?它首先加载源文件然后删除它,还是变量在bash脚本1中有值?
bash我对编辑正在运行的脚本时的两种看似不同的行为感到摸不着头脑。
这里不是讨论为什么要这样做的地方(你可能不应该这样做)。我只想尝试了解发生了什么以及为什么。
$ echo "echo 'echo hi' >> script.sh" > script.sh
$ cat script.sh
echo 'echo hi' >> script.sh
$ chmod +x script.sh
$ ./script.sh
hi
$ cat script.sh
echo 'echo hi' >> script.sh
echo hi
Run Code Online (Sandbox Code Playgroud)
脚本自行编辑,并直接执行更改(额外的回显行)。多次执行会产生更多行“hi”。
创建一个脚本infLoop.sh并运行它。
$ cat infLoop.sh
while true
do
x=1
echo $x
done
$ ./infLoop.sh
1
1
1
...
Run Code Online (Sandbox Code Playgroud)
现在打开第二个 shell 并编辑文件,更改x. 例如这样:
$ sed --in-place 's/x=1/x=2/' infLoop.sh
$ cat infLoop.sh
while true
do
x=2
echo $x
done …Run Code Online (Sandbox Code Playgroud) bash ×2