Bashの論理すべて/すべて

Bashの論理すべて/すべて

一連のテスト(それぞれ異なるPIDで)を実行し、すべてのテストが正常に終了した場合にのみ成功ステータスを取得したいと思います。それはまるで

check $PID1 && check $PID2 && check $PID3

しかし、不確実な数のテストの場合。どうすればいいですか?

ベストアンサー1

これをループで書くことはそれほど難しくありません。

pids=(1025 3425 6474)
check_all() {
    for pid in "$@"; do
        if ! check "$pid"; then
            return 1
        fi
    done
}
check_all "${pids[@]}"

リンクされたコマンドチェーンと同様に、&&この機能は最初の失敗時に停止しますcheck

しかし、変数などを単一の配列に置き換えましたPID1PID2Bashは名前が特定の文字列で始まる変数を繰り返すことができますが、配列はより便利です。 (これらの変数が正しい配列を渡すことができない環境を介してスクリプトの外部から来る場合は除外されます。)

checkまた、ここのループにコマンドをハードコーディングしました。さまざまなコマンドを渡すことで関数を実行できますが、これは単語の分離や引用の処理に問題があります。 (望むよりここそしてここ.)

おすすめ記事