【问题标题】:awk single or double quote usageawk 单引号或双引号用法
【发布时间】:2017-05-17 10:41:18
【问题描述】:

为什么 awk 命令使用单引号和双引号产生的结果不同?

root@vm90:/root# who | awk "{ print $2 }"
...
root@vm90:/root# who | awk '{ print $2 }'
...

我想在 PHP shell_exec() 函数中使用 awk,该函数在整个代码中使用简单引号。

这...

$output = shell_exec("who | awk '{ print $2 }'");

...有效,但我更喜欢...

$output = shell_exec('who | awk "{ print $2 }"');

...这个,不起作用。

【问题讨论】:

  • $2 在双引号内被 bash 扩展。所以事实上,要使用 awk 的 $2 你需要转义它:who | awk "{ print \$2 }"。

标签: php awk


【解决方案1】:

来自GNU Awk manual(强调添加):

由于双引号文本中的某些字符由shell 处理,因此它们必须在文本中转义。值得注意的是字符$、`、\ 和",如果要按字面意思传递给程序,则必须在双引号文本中以反斜杠开头。 (前导反斜杠首先被剥离。)

【讨论】:

  • 这就是为什么我总是在awk代码上使用单引号:awk 'code'
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 2016-11-08
  • 2012-10-16
  • 1970-01-01
  • 2017-04-09
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多