変数に割り当てると、他の結果が表示されます。なぜこれですか?
#!/bin/bash
P=$(ps -ef | grep ${APP} | grep -v grep | wc -l)
echo ps -ef | grep ${APP} | grep -v grep | wc -l
echo $P
出力:
0
3
答え1
2番目のコマンドは実際には実行せず、代わりps -ef
にリテラル文字列をエコーするので、欠陥がありますps -ef
。次に、grep
文字列にない特定の文字列を取得し、返されたps -ef
行数を計算します0
。つまり、 。
簡単にこれを行うことができます:
P=$(ps -ef | grep "${APP}" | grep -v grep | wc -l)
ps -ef | grep "${APP}" | grep -v grep | wc -l
echo "$P"
あるいは、Jeffが指摘したように、これはより簡単ですpgrep
。
p=$(pgrep "${APP}" | wc -l)
pgrep "${APP}" | wc -l
echo "$p"