awk:当连接字符串作为命令字符串传递时,不会打印列

awk:当连接字符串作为命令字符串传递时,不会打印列

我在编写脚本时发现了一些异常。

以下示例按预期工作:

$ echo 123 | awk '{print $1 456}'
123456
$ sh -c "echo 123 | awk '{print $1}'"
123

但下面的例子却没有:

$ sh -c "echo 123 | awk '{print $1 456}'"
456

我期望使用附加字符串打印第一列,该字符串应该123456像运行不带 .txt 的相同命令时一样返回sh -c。但正在发生的事情是,由于某种原因,第一列被忽略了。有趣的是,$1在不执行字符串连接时打印没有问题。

为什么会发生这种情况以及如何在传递到单独的 shell 实例的命令中进行字符串连接?

答案1

您必须逃脱$标志:

$ sh -c "echo 123 | awk '{print \$1 456}'"
123456

否则,$1由当前 shell 扩展。

相关内容