相关疑难解决方法(0)

shell脚本可以删除或覆盖自身吗?

#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

9
推荐指数
2
解决办法
8826
查看次数

Bash 更改运行脚本的差异

bash我对编辑正在运行的脚本时的两种看似不同的行为感到摸不着头脑。

这里不是讨论为什么要这样做的地方(你可能不应该这样做)。我只想尝试了解发生了什么以及为什么。

示例A:

$ 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”。

示例B:

创建一个脚本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

3
推荐指数
1
解决办法
65
查看次数

标签 统计

bash ×2