shell脚本处理从一个命令是错误的,从回音
问题描述:
被excuted你好,我是新来shell script
,我需要处理error
从命令来进行excuted内echo
像下面shell脚本处理从一个命令是错误的,从回音
echo -e "some internal command that I can't share \nq" | nc localhost 10000
我想说的
if [[ there's no error ]]
答
尝试
echo "YOUR SUPERSECRET COMMAND" | nc localhost 10000 | grep "Your expected error"
if [[ $? -eq 0 ]]; then
echo "Do something useful with error"
else
echo "Success"
fi
grep
上匹配返回0,并返回1,当它没有找到匹配的字符串。
答
shell变量$?
会给你退出代码。所以,你可以这样做:
echo -e "some internal command that I can't share \nq" | nc localhost 10000
rc=$?
if [[ $rc == 0 ]]; then
echo "success"
fi
或者干脆,
if echo -e "some internal command that I can't share \nq" | nc localhost 10000; then
echo "success"
fi
答
这里是做这件事的简洁的方式:
internalcommand &>/dev/null 2>&1 && echo OK || echo FAILED
如果internalcommand
成功确定将被打印到标准输出,如果失败,失败的原因是打印。
在Bash v4上测试的笔记
谢谢你的回答,但状态码$?无论是否存在错误,始终为0 – Edevo
@Rifai_deve试试这个。 –