Bashの単一の操作でgrepの出力と戻り値を取得します。

Bashの単一の操作でgrepの出力と戻り値を取得します。

私はbashスクリプトを書いています。特定のコマンドとgrepを実行します。

pfiles $1 2> /dev/null | grep name # $1 Process Id

応答は次のようになります。

sockname: AF_INET6 ::ffff:10.10.50.28  port: 22
peername: AF_INET6 ::ffff:10.16.6.150  port: 12295

応答は行なし、1行、または2行です。
grepが行を返さない場合(grep戻りコード1)、スクリプトを中止します。行が1つある場合は、A()またはB()を呼び出します(行が1つ以上の場合)。出力が1〜2行の場合、grepの戻りコードは0です。

grepには戻り値(0または1)と出力があります。
どうすれば両方をキャッチできますか?私が次のことをするなら:

OUTPUT=$(pfiles $1 2> /dev/null | grep peername)

その後、OUTPUT変数は出力(文字列)を持ちます。また、grepを実行するためのブール値も必要です。

ベストアンサー1

あなたはそれを使用することができます

output=$(grep -c 'name' inputfile)

変数にはoutput数値0または1が含まれます2。その後、ifステートメントを使用してさまざまな操作を実行できます。

おすすめ記事