2011-04-16 19 views
100

estoy tratando una línea como esta:¿Cómo usar el operador de mod en bash?

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

Lo que estoy tratando de obtener la mayor salida es:

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 

Pero lo que estoy consiguiendo realmente es:

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

Respuesta

144

Pruebe lo siguiente:

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

La sintaxis $(( )) hace un arithmetic evaluation de los contenidos.

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

Debe poner sus expresiones matemáticas dentro de $ (()).

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

Esto podría estar fuera del tema. Pero para el wget en bucle, ciertamente puede hacer

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