2016-10-26 11 views

回答

0

嘗試

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試試這個。 –

0

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

0

這裏是做這件事的簡潔的方式:

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

如果internalcommand成功確定將被打印到標準輸出,如果失敗,失敗的原因是打印。

在Bash v4上測試的筆記