我对shell脚本和UNIX相对较新。我使用的是Solaris盒子,问题就在于此
我们有一个名为strtwrfl.sh
的shell脚本,它将一个参数作为工作流程名称并启动工作流程,例如./strtwrfl.sh ABC
其中ABC
是工作流程名称。
我必须运行200多个此类工作流程,每个工作流程都取决于先前工作流程的成功完成,即如果有2个工作流程ABC
和BCD
,strtwrfl.sh BCD
将仅在strtwrfl.sh ABC
成功执行后才能成功。
每个工作流程都需要不同的时间才能成功执行。
我必须编写一个shell脚本,这样200多个informatica工作流必须(我不介意手动将这些工作流程输入到脚本中)一个接一个地执行,如果一个失败,脚本应该停止显示哪个工作流失败。< / p>
由于这是一个制作环境,我将无法在此处分享strtwrfl.sh
。
答案 0 :(得分:2)
我不确定我是否正确理解了你的问题,但是如果你想做的就是连续多次使用不同的参数调用脚本并在执行失败时死掉,你可以这样做:
meta_strtwrfl.sh
:
#!/bin/sh
script="./strtwrt.sh"
workflows="
ABC
BCD
CDE
"
for workflow in ${workflows}; do
"${script}" "${workflow}" || { echo "$0: workflow '${workflow}' failed!"; exit 1; }
done
echo "$0: all workflows finished successfully!"
更改script="./strtwrt.sh"
以反映strtwrt.sh
脚本的路径,并相应地更改workflows
。我不知道你的solaris系统上有哪个标准shell,所以我们不为workflow
变量使用数组,这意味着你的工作流名称不能以这种方式包含空格。
示例运行:
$ ./meta_strtwrfl.sh
./meta_strtwrfl.sh: all workflows finished successfully!
$ ./meta_strtwrfl.sh
./meta_strtwrfl.sh: workflow 'ABC' failed!
答案 1 :(得分:0)
这不应该是非常简单的......在一行中输入这些条目......一个接一个地......
./ strtwrfl.sh ABC ./strtwrfl.sh ABC1 ./strtwrfl.sh ABC2 .. .. ..
依旧......
那将是光秃秃的..
然后你可以通过处理错误来实现这一点..
或者你想要实现不同的东西?我无法从问题描述中找到它?
答案 2 :(得分:-1)
String