-1

私はこの状態に問題があります:

echo ${0##*/} # result: bady

my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!

edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!

なんで?

4

3 に答える 3

1

二重引用符があります。次のように変更します。

if [[ "$(pgrep -c bady)" -eq 1 ]]
于 2013-03-12T14:37:43.613 に答える
0

これを試して :

if (( $(pgrep -c bady) == 1 ))

整数を引用する必要はありません。

:((...))は算術コマンドであり、式がゼロ以外の場合は終了ステータス 0 を返し、式がゼロの場合は 1 を返します。副作用 (割り当て) が必要な場合は、"let" の同義語としても使用されます。http://mywiki.wooledge.org/ArithmeticExpressionを参照してください。

于 2013-03-12T14:38:35.897 に答える
0

カウントが 1 であることを本当に気にしますか?それとも、「一致」と「一致しない」を区別するだけで、カウントがたまたま 1 になるだけですか? の終了ステータスをチェックしてpgrep、一致が発生したかどうかを確認できます。

if pgrep "${0##*/}"; then
于 2013-03-12T15:00:08.160 に答える