2016-03-01 245 views

回答

2

這應該已經用空格阻止了賦值n =:Bash參數賦值不能有空格。其次,將一個命令的輸出分配給一個參數,你必須使用command substitution

n=$(grep -c 'value2' outputfile.tmp) 

注意,這會告訴你有多少包含至少出現一次value2,而不是實際數量爲value2。試想一下:

$ grep -c 'value2' <<< 'value2value2' 
1 

如果你知道,只會有一個value2每行(或要計算行),我們是很好的。如果你要計算的出現,你必須使用類似

n=$(grep -o 'value2' outputfile.tmp | wc -l) 

grep -o打印在單獨的行每場比賽,並wc -l計數線。

現在,要檢查$n的值是否不等於六,請使用條件。與作業不同,此必須有有空格。

!=比較用於字符串比較;爲整數,你應該使用-ne( 「不等於」):

if [ "$n" -ne 6 ]; then 

取而代之的是測試命令[ ]的,Bash有更靈活的[[ ]]條件epxression:

if [[ "$n" -ne 6 ]]; then 

其中引用不嚴格必要(但不傷害!)。

或者,我們可以使用一個算術表達式:

if ((n != 6)); then 

其中任何參數而沒有預先考慮$評價。