Я пытаюсь выполнить sudo команду, которая использует Awk, и похоже, что awk работает по-другому внутри sh -c.
echo '1 2' | awk '{print $2}'
2
sh -c "echo '1 2' | awk '{print $2}'"
1 2
Почему это происходит?
Вы используете двойные кавычки, поэтому $2
оценивается. Внутренние одинарные кавычки больше на это не влияют. Если $2
пусто, вы в основном звоните awk '{print }'
. Следовательно, вы получаете всю строку ввода как вывод.
Вы могли бы, например, избежать $
с обратной косой чертой: \$2