2013-12-11 19 views
0

我想獲得0 ..#格式的範圍,用於for循環。我現在有這個,但它沒有正確地抓住計數。我試圖在OpenWRT上運行這個。線數從grep到計數範圍變量Bash OpenWRT

count=echo $((${grep -c BSS /tmp/ScannedAPs.txt} - 1)) 

的錯誤:${grep -c BSS /tmp/ScannedAPs.FLT}: bad substitution

range="0..$count" 

echo "Count:" 
echo "$count" 
echo "Time for range" 
echo "$range" 

for index in $(eval echo "{$range}") 
do 
echo "${BSS[index]} ${SSID[index]} ${CHAN[index]}" >> /tmp/ScannedAPs_Parsed.txt 
done 

回答

1

正如您所指出的,錯誤是:

count=echo $((${grep -c BSS /tmp/ScannedAPs.txt} - 1)) 

Command Substitution正確的語法是$(command)。你說:

count=$(($(grep -c BSS /tmp/ScannedAPs.txt) - 1)) 

此外,你可以avoid using eval在:

for index in $(eval echo "{$range}") 

說:

for index in $(seq 0 $count) 

或者,你可以循環(如suggested由ruakh)說:

for ((index=0;index<=count;index++)); do 
    # Do something here 
done 
+0

謝謝; +1。另外,我認爲算術擴展可以省略,而for循環寫爲for((index = 0; index ruakh

+0

感謝您的回覆,我昨天得到了它的工作,但我喜歡你的建議,並會看到他們如何在openWRT上工作。再次感謝。 – Proto