1. ホーム
  2. バッシュ

[解決済み] コマンドが空の文字列を出力するかどうかをテストする

2022-03-28 05:39:16

質問

あるコマンドが空の文字列を出力するかどうかをテストするにはどうすればよいですか?

どのように解決するのですか?

<サブ 前回は、あるディレクトリにファイルがあるかどうかをチェックする方法を質問しました。 次のコードで実現できますが、以下をご覧ください。 rspの回答 を使えば、より良い解決策が得られるでしょう。


空の出力

コマンドは 戻る 値を出力します。この出力をキャプチャするには コマンド置換 ;例 $(ls -A) . Bashで空でない文字列をテストするには、次のようにします。

if [[ $(ls -A) ]]; then
    echo "there are files"
else
    echo "no files found"
fi

なお、私は -A ではなく -a というのは、シンボリックカレント( . ) と親 ( .. )ディレクトリのエントリです。

注意 コメントで指摘されているように、コマンドの代入 は末尾の改行を捕捉しません。 . したがって、コマンドの出力が のみ を使用すると、置換は何も捕捉せず、テストは偽を返します。 非常に低い確率ですが、上記の例では可能性があります。 より詳細な情報は この回答 .


終了コード

コマンドが正常に終了したことを確認したい場合は、次のように検査します。 $? には、最後のコマンドの終了コード(成功の場合はゼロ、失敗の場合は非ゼロ)が含まれています。たとえば

files=$(ls -A)
if [[ $? != 0 ]]; then
    echo "Command failed."
elif [[ $files ]]; then
    echo "Files found."
else
    echo "No files found."
fi

詳細情報 こちら .