在文件中排队 bash 命令

在文件中排队 bash 命令

我想将一些 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

那可能吗?

谢谢

答案1

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

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

与大多数脚本黑客一样,这有很多注意事项(如果你read 代码eval它):

  1. 如果文件描述符 9 ( -u 9) 用于任何脚本中的任何内容,则所有结果均无效。
  2. 如果任何脚本设置了任何变量,则此上下文不会被清除。
  3. 一旦读取 scripts.txt 的最后一行,循环就结束。

更好的解决方案是跑步只需删除点即可读取脚本。要使此方法有效,脚本路径需要至少包含一个斜杠,否则脚本需要位于您的 上PATH

相关内容