0

以下のコマンドを試して、出力を変数に保存しました:

k=$(kill -HUP 1234)  #command getting executed but not storing to variable
echo "$k"

出力に単語が含まれているかどうかを確認するには、次のようにします。

  if [[ outputvar =~ .*No such process*. ]]

例によると、上記は機能するはずですが、なぜ機能しないのかわかりません。プロセスを再起動できない場合、直接 gunicorn_django コマンドで少なくとも新しいプロセスを開始できるように、正しい方法を教えてください

4

1 に答える 1

1

通常、このようなエラー メッセージはstderrストリームに出力されますが、$()コンストラクトはstdoutストリームのみを返します。stderrにリダイレクトする必要がありますstdout:

k=$(kill -HUP 1234 2>&1)

正規表現にエラーがあります。*.末尾は.*;でなければなりません。また、テストで文字列を引用する必要があります。

if [[ "$k" =~ .*No\ such\ process.* ]]

が引用符で囲まれていることに注意してください"$k"。正規表現のスペースはエスケープされています。テストで引用符で囲まれた文字列を使用すると、正規表現の一致ではなく文字列の一致が強制されるため、正規表現を (として".*No such process.*")引用することはできません。=~

于 2012-10-29T06:54:27.653 に答える