BASH 脚本制作简单 Workflow - 更新 2014/6/17 12:00
2014-06-17 11:21
381 查看
因为需要,我创建了一个脚本叫 wf.sh (随意起什么名字),它可以读取当前目录下的 config.ini 配置文件来解析并执行工作流任务(Workflow)。
直接上代码:
CFGGet() {
grep "^$1 = " config.ini | tail -1 | sed 's~^[^=]* = \(.*\)$~\1~g'
}
# Notify: make sure launch() is below library functions and dependencies.
launch() {
local job="$1"
local ret=0
eval $(CFGGet Job.${job}.Command) || {
ret=$?
echo FAIL,$ret, command [$(CFGGet Job.${job}.Command)] is fail.
exit $ret
}
local nextJobCounts=$(CFGGet Job.${job}.NextJobCounts)
for ((i=1;i<=nextJobCounts;i++)); do
eval launch $(CFGGet Job.${job}.NextJob${i}.Name) &
done
return 0
}
run() {
local jobCounts=$(CFGGet Workflow.NextJobCounts)
for ((i=1;i<=jobCounts;i++)); do
launch $(CFGGet Workflow.NextJob${i}.Name) &
done
return 0
}
run
运行方式:
直接上代码:
config.ini
Workflow.Name = example Workflow.Description = my work flow example \n and I know what's going on here. #Workflow.StartJob = job1 Workflow.NextJobCounts = 1 Workflow.NextJob1.Name = job1 Job.job1.Command = echo "I am job1"; sleep 3; Job.job1.NextJobCounts = 3 Job.job1.NextJob1.Name = job2 Job.job1.NextJob2.Name = job3 Job.job1.NextJob3.Name = job4 Job.job2.Command = echo "I am job2"; sleep 3; Job.job2.NextJobCounts = 0 Job.job3.Command = echo "I am job3"; sleep 3; Job.job3.NextJobCounts = 0 Job.job4.Command = echo "I am job4"; sleep 3; Job.job4.NextJobCounts = 1 Job.job4.NextJob1.Name = job5 Job.job5.Command = echo "I am job5"; sleep 3; Job.job5.NextJobCounts = 1 Job.job5.NextJob1.Name = job6 Job.job6.Command = echo "I am job6"; sleep 3; Job.job6.NextJobCounts = 0
wf.sh
#!/bin/bashCFGGet() {
grep "^$1 = " config.ini | tail -1 | sed 's~^[^=]* = \(.*\)$~\1~g'
}
# Notify: make sure launch() is below library functions and dependencies.
launch() {
local job="$1"
local ret=0
eval $(CFGGet Job.${job}.Command) || {
ret=$?
echo FAIL,$ret, command [$(CFGGet Job.${job}.Command)] is fail.
exit $ret
}
local nextJobCounts=$(CFGGet Job.${job}.NextJobCounts)
for ((i=1;i<=nextJobCounts;i++)); do
eval launch $(CFGGet Job.${job}.NextJob${i}.Name) &
done
return 0
}
run() {
local jobCounts=$(CFGGet Workflow.NextJobCounts)
for ((i=1;i<=jobCounts;i++)); do
launch $(CFGGet Workflow.NextJob${i}.Name) &
done
return 0
}
run
运行方式:
$ ./wf.sh
相关文章推荐
- Oracle 10G简单制作自启动关闭数据库脚本的方法
- 利用Google Translate制作自己的翻译脚本(更新中>>>)
- 编写bash脚本来更新mongo数据库数据
- git gui & git bash 的简单操作手册 - 将本地更改上传更新到远程服务器
- bash脚本更新dnspod记录
- 超简单的邮件快速登录脚本制作实现方法[转]
- Ubuntu下使用dialog制作菜单执行简单脚本
- SHELL 简单脚本 更新中
- MAC 下 用 OC 制作简单的脚本
- 简单的bat批处理脚本辅助卸载更新android app
- 自己制作的autoitX的vbs脚本,用来自动配置金山毒霸2011局域网更新
- 简单bash脚本的编写
- 一个简单的脚本,实现自动执行MITM攻击(更新0.2)
- cmake:install制作简单的安装脚本
- bash脚本结构及简单添加用户脚本
- 简单的实现文件自动更新FTP脚本
- 利用Visual Studio制作安装包 / 简单的自动更新程序实现
- 简单调试 Bash 脚本
- bash脚本简单脚本集合(1)
- shell脚本的简单制作与格式