与/bin/bash-c一起使用时,awk不工作

与/bin/bash-c一起使用时,awk不工作,bash,awk,sh,Bash,Awk,Sh,这将正确打印测试 在/bin/bash中使用此命令时-c不起作用 /bin/bash -c "echo 'this is a test' | awk '{print $4}'" this is a test 当与/bin/bash-c一起使用时,如何使awk正常工作?$4由shell花费,因为您有双引号的命令字符串 您可以通过在bash命令行中添加-x来检查跟踪输出: bash-xc echo“这是一个测试”| awk“{print$4}” +回声“这是一个测试” +awk

这将正确打印测试

在/bin/bash中使用此命令时-c不起作用

/bin/bash -c "echo 'this is a test' | awk '{print $4}'"
this is a test
当与/bin/bash-c一起使用时,如何使awk正常工作?

$4由shell花费,因为您有双引号的命令字符串

您可以通过在bash命令行中添加-x来检查跟踪输出:

bash-xc echo“这是一个测试”| awk“{print$4}” +回声“这是一个测试” +awk'{print}' 这是一个测试 由于$4扩展为一个空字符串,它有效地运行awk{print},因此在输出中打印完整的行

要解决此问题,应使用转义的$来避免此扩展:

bash-c echo“这是一个测试”| awk“{print\$4}” 测验
是:/bin/bash-c echo“这是一个测试”| awk“{print\$4}”注意:您需要转义$。我将寻找一份副本@阿努巴瓦,是某种诵读困难吗?”这是“!=”测试“。。。。苏醒电话的Thx。另外,dupe只谈论bash-c,但OP也询问awk,并且dupe没有解释OP获得完整输出的原因。
/bin/bash -c "echo 'this is a test' | awk '{print $4}'"
this is a test