我正在尝试使用 Awk 执行 sudo 命令,但 awk 在 sh -c 中的工作方式似乎有所不同。
echo '1 2' | awk '{print $2}'
2
sh -c "echo '1 2' | awk '{print $2}'"
1 2
为什么会发生这种情况?
答案1
您使用双引号,因此$2
会进行求值。内部单引号不再影响这一点。如果$2
为空,则您基本上是在调用awk '{print }'
。因此,您会得到整个输入行作为输出。
例如,你可以$
用反斜杠进行转义:\$2