使用 sh -c 时出现意外的 Awk 结果

使用 sh -c 时出现意外的 Awk 结果

我正在尝试使用 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

相关内容