Я пробую такую строку:
for i in {1..600}; do wget http://example.com/search/link $i % 5; done;
То, что я пытаюсь получить в качестве вывода:
wget http://example.com/search/link0
wget http://example.com/search/link1
wget http://example.com/search/link2
wget http://example.com/search/link3
wget http://example.com/search/link4
wget http://example.com/search/link0
Но то, что я на самом деле получаю, это просто:
wget http://example.com/search/link
bash
возвращает только остаток , а не математический результат по модулю . Это означает, что, хотя математически это и-12 mod 10
есть8
, bash вычислит это как-2
. Вы можете проверить это с помощью simpleecho $((-12 % 10))
(-2
) и сравнить сpython3 python3 -c "print(-12 % 10)"
(8
).$(())
автоматически расширяет переменные, поэтому вам не понадобится$
сi
. Это$((i % 5))
будет работать на отлично.источник
Вы должны поместить свои математические выражения в $ (()).
Один лайнер:
Несколько строк:
источник
Это может быть не по теме. Но для цикла wget вы можете сделать
источник