これを使う
OF=$(ps fax | grep 'php-fpm: master process' | awk '{print $1}')
IDX=`expr index $OF ' '`
エラーが発生します。 $OF 変数の結果は次のとおりです。
27797 27495
ここで何の問題がありますか?私はこれが変数が式に渡される方法に関連していると思います。また、$ OF変数の周りに引用符を追加してみましたが、役に立ちませんでした。見つからない場合は0を返します。
答え1
pgrep
grepを使用する必要がありますプロセス番号プロセス。これが最も安全な方法です。一部のシステム(旧システム)はそうではないので、pgrep
やむを得ずps
。ps
あなたの行では、awkを使用してこれらすべてを処理できるので、不要なgrep
andを使用します。awk
of=$(ps fax | awk '/[p]hp-fpm: master process/{print $1}')
参考までに。一般変数名には大文字を使用しないでください。通常、環境変数は大文字で表示されます。
この段階では、あなたの変数が$of
保存されます。あなたの質問は不明なので、そこで何が起こっているのかphp-fpm
わかりません。expr
答え2
あなたはする必要があります二重引用符:
IDX=`expr index "$OF" ' '`
引用符がない場合、expr
コマンドは次のようになります。
expr index 27797 27495 ' '
これは言葉ではありません。一重引用符を使用すると、、および(スペースなし)expr
で構成される3文字の長い文字列を渡します。変数を二重引用符で囲むのはほぼ常に良い考えです。これは、値にスペースやその他の特殊文字を含めることができる場合に非常に重要です。$
O
F