所以我试图制作一个 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=$(...)
即可。但一般来说,您需要在命令替换周围加上引号。另请注意,它会吃掉尾随的换行符。
也可以看看: