![](/img/trans.png)
[英]why single quotes and double quotes works differently in “bash -c”?
[英]Why Does Running Awk With Double Quotes Break But Works With Single Quotes?
我在运行命令时注意到该语句无法识别定界符
awk -F',' "{print $4}" wtd.csv
但是,这一点确实如此。
awk -F',' '{print $4}' wtd.csv
有什么原因吗? 我确定这是我忘记的一些常规bash规则的一部分。
如果您使用双引号,则$4
将被Bash替换(可能是空字符串)。 您需要转义$
才能在双引号中使用它。
发生这种情况的示例:
[thom@lethe ~]$ echo '$4'
$4
[thom@lethe ~]$ echo "$4"
[thom@lethe ~]$ echo "\$4"
$4
您忘记了双引号允许bash变量插值。 在这种情况下,它将尝试用外壳程序的第四个参数(通常为空)替换$4
。
单引号防止bash插值,并将文字$4
传递给awk。
您将获得与以下结果相同的结果:
awk -F',' '{print $4}' wtd.csv
awk -F',' "{print \$4}" wtd.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.