将标准输出值分配给变量

将标准输出值分配给变量

所以我试图制作一个 sh 脚本,将从命令中获取的值放入变量中,在本例中为 n,但我不知道我在做什么,这显然不起作用哈哈:

  1 n=0
  2 cat test | grep -cE '[0-9]{1,4}' > $n
  3 echo "there were $n lines in test" > rtest1

它生成一个 rtest1 文件,其中显示“测试中有 0 行”

顺便说一下,Test 是一个有 10 行的文件。

那么如何将 stdout 中的值赋给 shell 脚本中的变量呢? :D

答案1

你想要的叫做命令替换:

file=./path/to/some/file
n="$(grep -cE '[0-9]{1,4}' < "$file")"
echo "there were $n matching lines in $file"

当然,您不需要作业中的引号,只需n=$(...)即可。但一般来说,您需要在命令替换周围加上引号。另请注意,它会吃掉尾随的换行符。

也可以看看:

相关内容