私はbashスクリプトに慣れていません。私がやっている小さなプロジェクトに行くと、私は学びました。しかし、私は過去を過ごすことができないという問題にぶつかってきました。変数を使ったBashコマンドの置き換え
私はコマンドに含める必要がある変数を持っています。シェル内で直接実行された場合(手動で入力された変数を使用)、コマンドは予想される結果を返します。しかし、私はそれを変数を使用するときに動作させることはできません。
私はこれを手動で実行すると、実行中かどうかに応じて正しく0または1を返します。
ps -ef | grep -v grep | grep -c ProcessName
私はこの間句にそのを埋め込むしようとすると、それが正しいテキストを探していないので、しかし、それは常に0に評価されます。
while [ `ps -ef | grep -v grep | grep -c {$1}` -ne 0 ]
do
sleep 5
done
これを達成する方法はありますか?私は無駄に別のものを無数に試しました。私もコマンド置換のために$()の構文を使用してみましたが、私はそれにも運がありませんでした。
ありがとうございます!
whileループのテストでは中カッコがありますが、あなたの例ではありません。 $ 1は正しい値を持っていますか? – Cascabel
変数を示すためにそこに必要と思ったので、whileループに中カッコを入れました。それは間違っているかもしれませんが、それらを削除しても問題は解決しません。そして、はい、$ 1が正しい値を持っています。私はwhile文の直前に 'echo $ 1'を追加しました。それは正しいです。 – grt3kl
中括弧を使用する必要がある場合は、ドル記号は最初の記号の前に置かれます。また、$ {1} "'を引用するのも良い考えです。便利な情報については、[プロセス管理](http://mywiki.wooledge.org/ProcessManagement)を参照してください。 –