awk 手册将此列为第一个示例:
awk "BEGIN { print \"Don't Panic!\" }"
显然我应该看到“不要惊慌!”,但实际上我看到了:
-bash: !\": event not found
有任何想法吗?
awk 手册将此列为第一个示例:
awk "BEGIN { print \"Don't Panic!\" }"
显然我应该看到“不要惊慌!”,但实际上我看到了:
-bash: !\": event not found
有任何想法吗?
这一切都取决于你的外壳。
> 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。
尝试
awk "BEGIN { print \"Don't Panic\!\" }"
这应该可以解决问题(在zsh下)。