2

awkマニュアルには、これが最初の例の1つとしてリストされています。

awk "BEGIN { print \"Don't Panic!\" }"

どうやら「パニックにならないで!」と表示されるはずですが、実際には次のように表示されます。

-bash: !\": event not found

何か案は?

4

2 に答える 2

4

それはすべてあなたのシェルに依存します。

> bash
$ awk "BEGIN { print \"Don't Panic!\" }"
bash: !\": event not found
$ tcsh
> awk "BEGIN { print \"Don't Panic!\" }"
Unmatched '.
> sh
$ awk "BEGIN { print \"Don't Panic!\" }"
Don't Panic!
$ 

感嘆符は、コマンドライン履歴の一部を参照するために最新のシェルで使用されます。bashおよびで、これらはtcsh履歴参照として解釈できます。でエスケープする!\、省略して、単純なシェルを使用することができます。

上記の私のbash例では、失敗した履歴の置換が表示されます。私のtcsh例では、引用符に問題があります(二重引用符はこの方法ではエスケープできないため)。使用しているawkマニュアルはおそらく十分に古いため、全員がbashを実行しているとは限りません。

于 2012-09-13T12:18:33.663 に答える
2

試す

awk "BEGIN { print \"Don't Panic\!\" }"

これでうまくいくはずです(zshの下で)。

于 2012-09-13T12:00:18.837 に答える