在open里面执行命令,怎么得到命令退出状态
答案:1 悬赏:0
解决时间 2021-04-17 19:59
- 提问者网友:低唤何为爱
- 2021-04-17 12:44
在open里面执行命令,怎么得到命令退出状态
最佳答案
- 二级知识专家网友:一只傻青衣
- 2021-04-17 13:31
放到后台去执行,前台已经不管其执行情况了,返回的仅仅是放入后台这个操作成功与否而非命令本身,那肯定都是成功的。
后台获取ls -l 命令的执行情况,可以考虑将错误输出流(2)导入标准输出(1)获取命令打印结果加以判断。如:
ret=`ls -l my 2>&1 &`
# 如果是用脚本执行的话,需要在这里判断进程是否存在,等待命令执行完;或者sleep足够长的时间
echo $ret | grep "No such file or directory" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Failed"
else
echo "Successful"
fi
或者也可以考虑写文件的方式,若后台命令执行发生错误,写错误日志,判断存在错误日志且大小不为0,就能知道命令执行发生错误了。这样做的好处是,不涉及具体错误信息的判断。
errlog=/tmp/err.log
size=0
ls -l my 2>$errlog &
# 如果是用脚本执行的话,需要在这里判断进程是否存在,等待命令执行完;或者sleep足够长的时间
[ -f $errlog ] && size=`wc -c $errlog | cut -d' ' -f1`
if [ $size -gt 0 ]; then
echo "Failed"
else
echo "Successful"
fi
后台获取ls -l 命令的执行情况,可以考虑将错误输出流(2)导入标准输出(1)获取命令打印结果加以判断。如:
ret=`ls -l my 2>&1 &`
# 如果是用脚本执行的话,需要在这里判断进程是否存在,等待命令执行完;或者sleep足够长的时间
echo $ret | grep "No such file or directory" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Failed"
else
echo "Successful"
fi
或者也可以考虑写文件的方式,若后台命令执行发生错误,写错误日志,判断存在错误日志且大小不为0,就能知道命令执行发生错误了。这样做的好处是,不涉及具体错误信息的判断。
errlog=/tmp/err.log
size=0
ls -l my 2>$errlog &
# 如果是用脚本执行的话,需要在这里判断进程是否存在,等待命令执行完;或者sleep足够长的时间
[ -f $errlog ] && size=`wc -c $errlog | cut -d' ' -f1`
if [ $size -gt 0 ]; then
echo "Failed"
else
echo "Successful"
fi
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯