cplane_pid=`pidof hnb_gw.exe`
if [ -z $cplane_pid ]
then
STATUS=`failure`
echo "Cplane hnbgw running $STATUS"
else
STATUS=`success`
echo "Cplane hnbgw running $STATUS"
fi
echo
答えて
hnb_gw.exe
のインスタンスが複数ある場合、pidofは複数のpidを返します。 -z
が[
の場合、pidは1つだけです。 1つの解決策は、pidofのスイッチ-s
を使用して、pidを1つだけ返すことです。
実際には、2つの引数があり、一方ではnoneを返します( '-z'は引数が空であるかどうかをチェックするだけです)。より多くの引用符がここではより良い解決策であるようです –
あなたは引用符が優れているという点では正しいですが、それは問題の理由ではありませんでした。 – urzeit
さて、そうだった。 '-z'は単なるpidを期待していません。それはちょうど1つ、空または空ではない引数を期待しています。したがって、1つだけのPIDを得ることは、求められることではありません。正確に1つの文字列を取得することは、引用符を必要とします。 –
pidofは複数のPIDを返すことができます。この場合、テストでは引数が多すぎます。
あなたがUse More Quotes™する必要があります。コマンドは、それは、その結果何を示した後
if [ -z "$cplane_pid" ]
はset -x
前とset +x
を追加する例:。
$ cplane_pid="1 2 3"
$ set -x
$ [ -z $cplane_pid ]
+ '[' -z 1 2 3 ']'
bash: [: too many arguments
、の各変数内の空白で区切られた値は単一のパラメータとして使用されました。 -z
には1つのパラメータが必要なため、構文エラーが発生します。
プロセスが存在しない場合は、変数としてこれを保存し、あなたは、単に
if ! pidof hnb_gw.exe > /dev/null
を行うことができますのではなく、それは(「偽」)1を返します。
あなたは
cplane_pid=`pidof hnb_gw.exe`
を実行すると、その後cplane_pid
は、より多くの(スペース区切り)の項目を含めることができます。
だから、あなたは(あなたがシェルで常にこの操作を行う必要がある変数を引用してこの問題を解決することができます
if [ -z $cplane_pid ]
の拡大は
if [ -z firstPid secondPid etc ]
になり、それが"[: too many arguments"
あなたのエラーです)
if [ -z "$cplane_pid" ]
または[[
(システムにインストールされている場合)を使用してください。これはさまざまな点で優れています。たとえば、あなたは、変数引用する必要はありません:)
if [[ -z $cplane_pid ]]
はテスト目的(及び、このようなerros)については
if [[ -z "$cplane_pid" ]]
と同じである-x hasbangのbashのオプション
#!/bin/bash -x
を使用します
または使用するデバッグセクション
-- normal code --
set -x # debug section starts here
[ -z $cplane_pid ] && echo zero
eval something
set +x # debug section ends here
-- normal code --
また、スクリプトを呼び出すことができます
/bin/bash -x yourScript.sh
'sh:2:[:見つからない(cygwin'/bin/sh'では、常にbashなので、ほとんどのユニークではうまくいきません) –
私はより多くの解決策を述べました:) jinak zdravim、本荘:) – bartimar
- 1. プロシージャまたは関数Event_Updateはあまりにも多くの引数が
- 2. bashの場合:cd:あまりにも多くの引数
- 3. カスタムパイプ多くの引数
- 4. PHP GETリクエストにあまりにも多くの変数がありますか?
- 5. 警告:フォーマットのためにあまりにも多くの引数 - メインで
- 6. PROCEDUREの引数の数が正しくありません
- 7. があり、多くの
- 8. invoke throws IllegalArgumentException:引数の数が正しくありません
- 9. Rspec mockエラー:引数の数が正しくありません
- 10. ArgumentError:引数の数が正しくありません
- 11. コールバック関数のGLFWがより多くの引数を渡しました
- 12. あまりにも多くのテキストが
- 13. setIntervalsの数はどれくらい多くありますか?
- 14. コンストラクタの引数が多すぎます
- 15. open()の引数が多すぎます
- 16. Webpackの引数が多すぎます
- 17. 引数が多すぎますが、私は、引数
- 18. 引数が多すぎますが
- 19. より多くの引数と統合を伴う関数
- 20. フロータイプ:多くのタイプの可能性がある関数の引数を扱う
- 21. setLoggerLevel()の引数が正しくありません。loggingmxbean
- 22. jQueryがあまりにも多くのhtmlを取り除く
- 23. 引数の後ろにAjaxの引数がありません
- 24. codeigniterの引数がありません
- 25. 引数のラベルがありません
- 26. テンプレートの引数がありません
- 27. 引数が多すぎます
- 28. 引数が多すぎます
- 29. Matlabクラスメソッド:引数が多すぎます
- 30. dumpdata、引数が多すぎますか?
$ STATUSがifブロックに設定され、エコーが来るようにリファクタリングを検討してください。 – icedwater