您能否在 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/