Почему команда awk не дает одинаковые результаты с простыми кавычками и двойными кавычками?
root@vm90:/root# who | awk "{ print $2 }" ... root@vm90:/root# who | awk '{ print $2 }' ...
Я хотел бы использовать awk в функции PHP shell_exec (), которая использует простые кавычки во всем коде.
Эта …
$output = shell_exec("who | awk '{ print $2 }'");
… работает, но я предпочитаю …
$output = shell_exec('who | awk "{ print $2 }"');
… это, что не работает.
Из руководства GNU Awk (выделено мной):
Поскольку определенные символы в тексте с двойными кавычками обрабатываются оболочкой , они должны быть экранированы в тексте. Следует отметить символы
$
,`
,\
и"
, которым должно предшествовать обратная косая черта в тексте с двойным кавычком, если они должны быть переданы буквально программе. (Ведущая обратная косая черта сначала удаляется.)