提交脚本的Bash语法



我有一个小型bash脚本,它具有以下结构:

cd {PATH1}
bash {SCRIPT1} &
sleep 3600
cd {PATH2}
bash {SCRIPT2} &
sleep 3600
...

每个"记录"由3行组成:

  • 第一行将我带到一个目录,我将从该目录启动工作流。它必须保持这种状态,即我必须先移动到一个目录,然后从那里提交
  • 第二行调用bash脚本,该脚本将启动一个大型工作流。请注意,我将其移到后台,以便处理其他"记录">
  • 第三行是让这个脚本休眠1小时。由于工作流程的性质,这是必要的

我希望它是一个提交大约100个工作流的主脚本
现在,我的问题是,我刚刚注意到,如果某些工作流出现错误,那么脚本将不再提交其余的
我应该如何调整它,以便无论任何一个工作流的结果如何,都能提交每个工作流?

我无法重现你所说的内容。以下是我根据你的描述写的:

$ cat workflow.sh 
#!/bin/bash
set -x
cd /opt/
false &
sleep 1
cd $HOME
false &
sleep 1

这里,false模拟失败的作业提交。当我运行它时,一切都会运行:

$ bash workflow.sh 
+ cd /opt/
+ sleep 1
+ false
+ cd /home/omajid
+ sleep 1
+ false
$ echo $?
0

您的脚本中有set -e或类似的内容吗?一旦第一个命令失败,set -e就会让bash退出您的脚本。

最新更新