2013-05-30 93 views
0

我試圖移植一個shell腳本在GNU for Windows上運行,它爲Windows提供了一個bash shell。我遇到了一個問題:Bash在Windows while循環

while [ $no -le $number ] 

似乎沒有註冊。作爲一個測試,我試過

no=1 
number=10 
echo debug1 
while [ $no -le $number ] 
do 
echo debug2 
no=$((no+1)) 
done 
echo debug3 

這會返回debug1和debug3,所以它似乎甚至沒有進入循環。

no=1 
echo debug1 
while [ $no -le 10 ] 
do 
echo debug2 
no=$((no+1)) 
done 
echo debug3 

另一方面,這是工作,並給我debug1,10 debug2s和debug3。

我猜這是一個語法錯誤,但我不知道如何解決這個問題。有什麼建議麼?

+2

到底什麼是「GNU for Windows」?你的意思是MinGW? – jamesdlin

+0

它可能是GnuWin32的東西。據我所知,這不僅僅是MinGW發展的事情。 – paxdiablo

+0

糟糕。我的意思是Windows上的GNU。 https://github.com/bmatzelle/gow/wiki這就像Cygwin。 – Firnagzen

回答

1

bash在linux下,即使在比較古老bash工作正常(因爲它應該),我已經在Cygwin中:

pax> number=10 
pax> no=1 ; while [ $no -le $number ] ; do echo $no ; no=$((no+1)) ; done 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

我唯一的建議是打印出兩個變量在嘗試之前進入while循環和no=$((no+1))行後,萬一有什麼不對勁,像:

echo "[$no] [$number]" 

你也可以把一個set -x在頂O你的腳本,因爲它會輸出每個解釋行,然後嘗試執行它。

+0

馴服的海森蟲。當我回到家中並再次嘗試時消失。也許GoW安裝需要重啓或什麼。 – Firnagzen