の下に、このエラーを受け取りました。シェルスクリプトでは、スペースが割り当てられていないことがあります。 this guideと$(…)
vs `…`
のその適用範囲は、おそらくここでの問題を示唆していないのに(
バッククォートは、あなたのコードに有害かもしれないが、私は非常に長い時間でIBM AIXを使用していないので、それはあなたのPOSIXシェルに不可欠であり)。あなたが試すことができることの1つは、kshまたはbashでコードを実行することです。
次のコードは、標準準拠のPosixシェルを前提としています。動作しない場合は"$(…)"
の表記を"`…`"
の表記に置き換えてください。これらは、返される数値なので、技術的には二重引用符を使用する必要はありませんが、それは良い方法です。
count="$(awk '$0 ~ /Reason code "68"/' ladb.log | wc -l)"
上記動作するはずですが、質問へのコメントで述べたように、それは
count="$(awk '/Reason code "68"/ {L++} END { print L }' ladb.log)"
ように、よりきれいに書くことができ、grep -c
はawkのより速いかもしれないが、あなたがの場所を知っていればそのテキスト、awkはさらに速くなります。はい、posixシェルが"$(…)"
の内側に二重引用符を理解することのできる
count="$(awk '$1$2$3 == "Reasoncode\"68\"" {L++} END { print L }' ladb.log)"
そのawkの文字列の必要性内の外側の二重引用符、これだけ内側の二重引用符に関連していない:それは、行を開始しましょうエスケープする。
スクリプトに '='の前後にスペースがありますか? – kdhp
スクリプトに '='のところにスペースがある場合は、最初の引数として '='を指定して 'count'コマンドを実行し、' awk ... |他の引数として「wc -l」を指定します。そして、何らかの理由で、 'count'コマンドは辞書の名前として' = 'を好きではないので、それは文句を言う。シェルスクリプティングは非常にスペースに敏感で、代入演算子の代入のスペースは許されません(より正確には、代入演算子と思われる部分にスペースを入れると完全に誤解されます)。 –
[Bashのコマンドの出力に変数を設定する方法は?](http://stackoverflow.com/questions/4651437/how-to-set-a-variable-to-the-output-from) -a-command-in-bash) –