#!/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变化来改变不同的东西?
非常感谢!
正如其他人所说,问题在于单引号阻止了变量的扩展。但是,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)