telnet test | grep -o Unable
telnet: Unable to connect to remote host: Connection refused
結果は「不可能」でなければなりません。
答え1
telnet
接続できないときに出力されるエラーメッセージが標準で印刷されます。間違い小川。デフォルトでは、標準エラーストリームは端末に直接送信されます。標準パイプのみ使用できます。出力別のコマンドに移動します(grep
この場合)。
エラーストリームを標準出力ストリームにリダイレクトできます。
telnet test 2>&1 | grep -o Unable
これにより、2つのストリームがマージされ、grep
マージされたデータストリームとして機能します。
エラー状態をキャプチャする場合は、ユーティリティの終了ステータスtelnet
を使用することもできます。
if ! telnet test 2>/dev/null; then
echo 'something went wrong with telnet'
exit 1
fi
echo 'telnet ran successfully'
telnet
ゼロ以外の終了ステータスが返されると(失敗の一種を示す)、スクリプトは終了します。また、エラーストリームをリダイレクトして/dev/null
完全に削除しました。
答え2
メッセージがstderrに印刷されているように見えるので、次のようにします。
telnet test 2>&1 | grep -o Unable
BashとZSHでは、次のものも使用できます|&
。
telnet test |& grep -o Unable