为什么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 }"');
......这个,不起作用。
答案 0 :(得分:3)
从GNU Awk manual(强调添加):
因为文本中的文本中的某些字符由 shell 处理,所以它们必须在文本中转义。值得注意的是字符
$
,`
,\
和"
,如果要传递的话,所有字符必须在双引号文本中以反斜杠开头在字面上对该计划。 (首先剥离前导反斜杠。)