2013-09-05 70 views
3

我写了以下shell来计算以“A valA B valB”模式开始的行数。但是,我认为我没有正确地传递变量。任何帮助解决这个问题?将变量传递给shell中的grep

for i in {0..16}; 
do 
    for j in {0..16}; 
    do 
     echo A $i B $j 
     grep '^ A : "$i" B : "$j"' file | wc -l 
    done 
done 
+2

双引号部分是要匹配的文本,还是那个n尝试触发变量扩展? –

回答

8

正确使用bash quoting''内部的变量没有扩展。请参阅链接以供参考。

grep "^ A : $i B : $j" file | wc -l 

也许你的意思是,但只是尝试。

grep "^ A : \"$i\" B : \"$j\"" file | wc -l 
6
  1. 您需要正确的shell引用(使用双引号shell的变量扩展)
  2. 你不需要wc -l,你可以直接使用grep -c计数比赛

你可以使用:

grep -c "^ A : $i B : $j" file