如何在shell程序中grep变量?

Mai*_*ano 5 bash shell grep

#!/bin/bash

for ((var=0; var<20; var++))
do
echo " Number is: $(grep 'Multiple_Frame = echo **$var**'  20mrf.txt | wc -l)" >>statisic.txt 

done
Run Code Online (Sandbox Code Playgroud)

这个shell程序无法产生正确的结果,这可能是第二个grep命令中返回错误的原因.

如何在第二个echo句子中grep变量?根据var变化来改变不同的东西?

非常感谢!

Pau*_*ce. 4

正如其他人所说,问题在于单引号阻止了变量的扩展。但是,using$()允许您使用双引号:

echo " Number is: $(grep "Multiple_Frame = echo **$var**"  20mrf.txt | wc -l)" >>statisic.txt
Run Code Online (Sandbox Code Playgroud)

虽然我怀疑你的意思是这样的:

echo " Number is: $(grep "Multiple_Frame = $var"  20mrf.txt | wc -l)" >>statisic.txt
Run Code Online (Sandbox Code Playgroud)

您还应该知道grep有一个输出计数的选项,因此您可以省略wc

echo " Number is: $(grep -c "Multiple_Frame = $var"  20mrf.txt)" >>statisic.txt
Run Code Online (Sandbox Code Playgroud)