在文件中排队bash命令


1

我想在我可以修改的文件上排队一些bash脚本。所以我启动了文件“lauchscripts.py”或“lauchscripts.sh”,其中包含启动脚本的命令:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:>

这样:1)当我启动它时,它启动script1.sh,然后当它完成时启动script2.sh等等。2)运行的任何时候,我都可以在我的“lauchscripts”文件中添加行,稍后将执行该文件。让我们说在运行script3.sh(第3行)时,如果我在第4行添加一个命令:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:> source folder4/script4.sh

完成script3.sh后,该行将执行script4.sh

那可能吗?

谢谢


相关:在shell脚本运行时编辑它。只是附加到该文件可能会工作,但我不会将其作为我的工作流程的关键部分。
Kamil Maciorowski

如果你想运行(不是源代码)这些脚本(或其他命令)并且你在Unix上,请看这个问题。Task Spooler看起来很有前途。
Kamil Maciorowski

Answers:


0

如果您的文件包含脚本本身的名称而不是代码,则可以轻松安全地执行此操作:

while read -r -u 9
do
    . "$REPLY"
done 9< scripts.txt

与大多数脚本黑客,也有很多需要注意的地方,以这个(甚至更多,如果你read 的代码eval它):

  1. 如果文件描述符9(-u 9)用于任何脚本中的任何内容,则所有投注都将关闭。
  2. 如果任何脚本设置了任何变量,则不会清除此上下文。
  3. 读完最后一行scripts.txt后,循环结束。

更好的解决方案是运行您阅读的脚本,只需删除点即可。为此,脚本路径需要包含至少一个斜杠,否则脚本需要在您的脚本上PATH


我试过了,看起来在运行while read代码时,它会一次性读取,而不是读取执行。因此,在运行行时更改scripts.txt不会影响将要运行的内容。
nikarko01
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.