【发布时间】:2018-04-03 13:22:26
【问题描述】:
此命令将打印a。
echo "line1 a b c" | awk '{ print $2 }'
如果我将单引号更改为双引号,像这样,它将打印整行。
echo "line1 a b c" | awk "{ print $2 }"
为什么?我知道我应该使用单引号,但是为什么我使用双引号会打印整行?
【问题讨论】:
-
使用双引号,shell 将
$2扩展为第二个位置参数,该参数很可能为空,而 awk 只看到print。 -
@BenjaminW。同意你的回答,但不要认为它是重复的。
-
我看不出它是如何不是重复的。一个关于 bash 中单引号和双引号有何不同的答案回答了它们在使用 bash 调用
awk时有何不同,因为唯一的区别是 shell 的行为;awk无法分辨awk '{ print }'和awk "{ print $2 }"之间的区别,而 bash 的$2为空。