1

/!bin/sh

   if [ "`echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d'`" != "OK" ]; then
        echo "howdy dody"
   fi

echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d'

最初の if-condition が実行されません。不適切な引用が原因だと推測していますが、わかりません。

助けてくれてありがとう。

4

5 に答える 5

1

-F他の引数を囲むように、オプションへの引数を一重引用符で囲むこともできます。

if [ "`echo $desc $status | awk -F',' '{print $3}' | awk -F' ' '{print $1}' | sed '/^$/d'`" != "OK" ]; then
于 2009-12-29T13:32:02.643 に答える
0

二重引用符をエスケープすることは確かに良い考えですが、$3 と $1 は awk によって解釈されるように意図されているようです。代わりに、シェルによって解釈されています。おそらく「$」をエスケープしたいと思うでしょう。(シェルで $1 と $3 に意味のある値がある可能性はありますが、そうではありません。)

于 2009-12-29T15:33:43.303 に答える
0

一見すると、いくつかの二重引用符をエスケープしてみてください:

   if [ "`echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d'`" != "OK" ]; then
        echo "howdy dody"
   fi

   if [ "`echo $desc $status | awk -F\",\" '{print $3}' | awk -F\" \" '{print $1}' | sed '/^$/d'`" != "OK" ]; then
        echo "howdy doody"
   fi
于 2009-12-29T10:59:49.160 に答える
0

Bash を使用している場合は$(...)、逆引用符の代わりにお勧めします。どのようなエラー メッセージが表示されますか? 私の推測では、-F","awk のオプションが適切に引用されていません。\引用符をエスケープするために挿入しようとしています。

于 2009-12-29T10:49:46.547 に答える