提交脚本的Bash语法

时间:2018-11-13 15:48:09

标签: bash

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

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

每个“记录”由3行组成:

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

我希望它是可提交约100个工作流的主脚本。
现在,我的问题是,我只是注意到,如果某些工作流程引发错误,那么脚本将不再提交其余部分...
我应该如何调整它,以使每个工作流程都得到提交,而不管任何一个工作流程的结果如何?

1 个答案:

答案 0 :(得分:1)

我无法复制你在说什么。这是我根据您的描述写的:

$ 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退出脚本。