82

/usr/local/bin/monit --versionbashの1行で、の出力に正確に含まれていない場合は終了ステータス0を返し、含まれている場合は終了ステータス1を返すにはどうすればよい5.5ですか?

4

3 に答える 3

115
! /usr/local/bin/monit --version | grep -q 5.5

(grep一致が見つかった場合は 0 の終了ステータスを返し、それ以外の場合は 1 を返します。-qオプション「quiet」は、見つかった一致を出力しないように指示します。つまり、grep必要なのは戻り値だけであることを伝えます。 -value.!先頭の は、パイプライン全体の終了ステータスを反転します。)

追加するように編集:または、(を呼び出すのではなくgrep)「純粋な Bash」でこれを実行する場合は、次のように記述できます。

[[ $(/usr/local/bin/monit --version) != *5.5* ]]

( Bash Reference Manualの §3.2.4.2 "Conditional Constructs" で[[...]]説明されています。は、ファイルグロブの場合とまったく同じです: 0 個以上の文字、プラス、プラス 0 個以上の文字。)*5.5*5.5

于 2012-09-11T18:32:38.980 に答える
28
[ $(/usr/local/bin/monit --version) == "5.5" ] 

例-1: 成功を確認する

[ $(/usr/local/bin/monit --version) == "5.5" ] && echo "OK"

例-2: 失敗のチェック

    [ $(/usr/local/bin/monit --version) == "5.5" ] || echo "NOT OK"

または、出力に含まれているかどうかを確認するには5.5:

[[ $(/usr/local/bin/monit --version) =~ "5.5" ]] || echo "NOT OK"
于 2012-09-11T18:32:54.090 に答える