linux - 在运行时编辑 shell 脚本

您能否在 shell 脚本运行时对其进行编辑并让更改影响正在运行的脚本?

我很好奇 csh 脚本的具体情况,我有该批处理运行一堆不同的构建风格并运行一整夜。如果我在操作中遇到什么问题,我想进去添加额外的命令,或者注释掉未执行的命令。

如果不可能,是否有任何 shell 或批处理机制可以让我这样做?

当然我已经尝试过了,但要等好几个小时才能看到它是否有效,我很好奇幕后发生了什么或没有发生什么。

最佳答案

确实影响,至少在我的环境中受到影响,但以非常不愉快的方式。请参阅这些代码。第一个a.sh:

#!/bin/sh

echo "First echo"
read y

echo "$y"

echo "That's all."

b.sh:

#!/bin/sh

echo "First echo"
read y

echo "Inserted"

echo "$y"

# echo "That's all."

$ cp a.sh run.sh
$ ./run.sh
$ # open another terminal
$ cp b.sh run.sh  # while 'read' is in effect
$ # Then type "hello."

在我的例子中,输出总是:

hello
hello
That's all.
That's all.

(当然自动化要好得多,但上面的例子是可读的。)

[edit] 这是不可预测的,因此很危险。 最佳解决方法是,as described here 将所有内容放在一个大括号中,并在右大括号之前放置“exit”仔细阅读链接的答案以避免陷阱。

[已添加] 确切的行为取决于一个额外的换行符,可能还取决于您的 Unix 风格、文件系统等。如果您只是想查看一些影响,只需在 b.sh 之前添加“echo foo/bar”,然后/或在“读取”行之后。

https://stackoverflow.com/questions/3398258/

相关文章:

python - 什么是好的速率限制算法?

linux - 如何 cat <> 包含代码的文件?

python - Pandas 中的 join 和 merge 有什么区别?

python - 如何在 Django 模板中显示当前年份?

python - 使用 csv 模块从 csv 文件中读取特定列?

c - 为什么 malloc 将 gcc 中的值初始化为 0?

python - 列表列表到 numpy 数组中

linux - bash - 如何将结果从 which 命令传送到 cd

linux - 使用 bash 脚本自动化远程登录 session

regex - 更改文件夹中的所有匹配项