2011-04-16 19 views
100

我想這樣一行:如何在bash中使用mod運算符?

for i in {1..600}; do wget http://mydomain.com/search/link $i % 5; done; 

我試圖得到儘可能輸出是:

wget http://mydomain.com/search/link0 
wget http://mydomain.com/search/link1 
wget http://mydomain.com/search/link2 
wget http://mydomain.com/search/link3 
wget http://mydomain.com/search/link4 
wget http://mydomain.com/search/link0 

但我真的開始就是:

wget http://mydomain.com/search/link 

回答

144

請嘗試以下操作:

for i in {1..600}; do echo wget http://mydomain.com/search/link$(($i % 5)); done 

$(( ))語法的內容爲arithmetic evaluation

28
for i in {1..600} 
do 
    n=$((i%5)) 
    wget http://mydomain.com/search/link$n 
done 
19

你必須把你的數學表達式放在$(())裏面。

for i in {1..600}; do wget http://mydomain.com/search/link$(($i % 5)); done; 
9

這可能是題外話。但是對於wget in for循環,您當然可以做

curl -O http://mydomain.com/search/link[1-600]