尝试 awk 时使用 echo 操作 `

0 bash awk shell-script echo

怎么来的

 echo `echo "foo"`
Run Code Online (Sandbox Code Playgroud)

有效但

 echo `awk '{ print "foo" }'`
Run Code Online (Sandbox Code Playgroud)

不是吗?

Kus*_*nda 5

awk程序将等待输入,输入的每一行,打印字foo。这就是awk程序{ print "foo" }所做的。

相反,echo在第一个命令替换中,不等待输入。

您是否希望awk程序在没有任何输入的情况下只打印某些内容,然后在BEGIN块中进行输出:

awk 'BEGIN { print "foo" }'
Run Code Online (Sandbox Code Playgroud)

BEGIN读取第一行输入之前执行,由于脚本中没有其他块,也没有输入文件,因此它将退出。

此外,永远不要编写像echo $( ... )orecho ` ... `之类的代码,只需使用命令替换中的代码即可。

  • 所有`awk`s 我也只用`awk 'BEGIN { print "foo" }'` 立即返回,就像`awk ""` 一样,即如果它除了`BEGIN` 没有任何规则,它不等待输入。 (2认同)