我正在编写一个脚本,其中包括多次运行shell命令。此命令不能很好地处理退出代码,我需要知道进程是否成功结束。
所以我想的是分析 stderr 来找出错误这个词(使用grep)。我知道这不是最好的事情,我正在努力....
无论如何,我能想象的唯一方法是将该程序的 stderr 放在变量中,然后使用grep,“grep”它并将其抛给另一个变量。然后我可以看看该变量是否有价值,这意味着存在错误,并完成我的工作
qustion是:我怎么能这样做?
我真的不想在里面运行变量,因为它有很多参数(带反斜杠,引号,双引号等特殊字符)并且它是一个内存而我/ O密集型计划。
等待你的回复,谢谢。
答案 0 :(得分:0)
将该命令的stderr重定向到临时文件,并检查该文件中是否存在“error”字样。
mycommand 2> /tmp/temp.txt
grep error /tmp/temp.txt
答案 1 :(得分:0)
谢谢@Jdamian,最后这也是我的答案。
我问我的校长是否可以写一个临时文件并允许,所以这是最终结果:
... script
command to be launched -argument -other "argument" -other "other" argument 2>&1 | tee $TEMPFILE
ERRORCODE=( `grep -i error "$TEMPFILE" `)
if [ -z $ERRORCODE ] ;
then
some actions ....
我还没有对此进行测试,因为我之前需要编写其他一些脚本。 我要做的是:
您怎么看?
答案 2 :(得分:0)
如果您不需要标准输出:
if mycommand 2>&1 >/dev/null | grep -q error; then
echo an error occurred
fi