awk手册将此列为第一个示例之一:
awk "BEGIN { print \"Don't Panic!\" }"
显然我应该看到“别恐慌!”,但实际上我看到了:
-bash: !\": event not found
有什么想法吗?
答案 0 :(得分:4)
一切都取决于你的shell。
> 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!
$
现代shell使用感叹号来引用命令行历史记录的各个部分。在bash
和tcsh
中,可以将它们解释为历史记录参考。您可以使用!
转义\
,也可以将其删除,也可以使用简单的shell。
在我上面的bash
示例中,您会看到失败的历史记录替换。在我的tcsh
示例中,您发现引用存在问题(因为双引号不能以这种方式转义)。你正在使用的awk手册可能已经足够大,以至于它不会假设每个人都运行bash。
答案 1 :(得分:2)
尝试
awk "BEGIN { print \"Don't Panic\!\" }"
这应该可以解决问题(在zsh下)。