コマンド出力から正しい単語を印刷したいです。

コマンド出力から正しい単語を印刷したいです。
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

関連情報