2013-09-05 71 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