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,当它没有找到匹配的字符串。

+0

谢谢你的回答,但状态码$?无论是否存在错误,始终为0 – Edevo

+0

@Rifai_deve试试这个。 –

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 
+0

感谢您的回答,但状态码$?无论是否存在错误,始终为0 – Edevo

+0

如果'nc'总是返回0,那么你不能做太多的事情。但在我的几次尝试中,它在失败时确实返回1。那么,当它返回0时,你怎么知道它失败? – usr

这里是做这件事的简洁的方式:

internalcommand &>/dev/null 2>&1 && echo OK || echo FAILED

如果internalcommand成功确定将被打印到标准输出,如果失败,失败的原因是打印。

在Bash v4上测试的笔记