如何通过管道 wc -l 输出到 echo 输出

GJa*_*ain 8 bash shell

我通过执行以下操作来计算日志文件中的错误grep error logfile | wc -l

输出10

我要打印Error count found in logfile is 10

我认为需要通过 echo 进行管道传输,但是如何将 10 附加到 echo 输出?

我试过

 var="$(grep -i error logfile | wc -l)" | echo "Error count found in logfile is $var"
Run Code Online (Sandbox Code Playgroud)

zmo*_*zmo 9

你不应该将 var 通过管道传递到 echo 中,而是按顺序运行它们:

var="$(grep -i error * | wc -l)"
echo "Error count found in logfile is $var"
Run Code Online (Sandbox Code Playgroud)

或者您可以通过使用bash仅为 echo 命令定义变量:

 var="$(grep -i error * | wc -l)" ; echo "Error count found in logfile is $var"
Run Code Online (Sandbox Code Playgroud)

正如下面的评论中所述,当然您可以将命令调用嵌入到 echo 语句中:

echo "Error count found in logfile is $(grep -i error * | wc -l)"
Run Code Online (Sandbox Code Playgroud)

  • @zmo 在哪个版本的 `zsh` 中,`foo=3; foo=5 echo $foo` 打印 5 而不是 3?命令前环境分配适用于任何 POSIX shell,但不影响命令行中的参数扩展。 (2认同)