在linux或mac下,shell script 中要执行一个程序Foo(很耗时,且不是当前shell的子进程),需要Foo成功且自动关闭后再进行一些后续操作,该怎么实现?
|
47jm9ozpAug 10, 2014
1
Foo && Bar
|
|
aa65535Aug 10, 2014
2
Foo && {
# do something } 或者 Foo RETVAL="$?" [ $RETVAL != 0 ] && exit 1 # do something shell 中命令执行后是有退出码的,为零表示成功,非零表示失败。 所以你要保证 Foo 不会再执行失败时返回 0 就行了。 |
|
kfllAug 10, 2014
3
set -e
Foo # 失败退出,成功继续脚本 |
|
4
|
|
aa65535Aug 10, 2014
5
@lihuoqingfly 那这样的话只能循环检测程序是否退出了
# 下面的 test.sh 是你shell 脚本的名称 Foo while true; do ps -ef | grep -v grep | grep -v "test.sh" | grep Foo || break sleep 5 done # do something |
|
gavingengAug 10, 2014
6
@lihuoqingfly 你可以在shell进程中对前步逻辑进行监控,比如ps,或是checkpoint文件之类的,判断这些来做下一步的执行,不过都看需要了!
|
|
47jm9ozpAug 10, 2014
7
@lihuoqingfly 你是 open -a /Application/xxx.app 还是 /Applications/xxx.app/Contents/MacOS/xxx 这样运行的,要后面这个
|
|
clinoAug 10, 2014 via Android
8
sh -e
|