Ich versuche eine Zeile wie diese:
for i in {1..600}; do wget http://example.com/search/link $i % 5; done;
Was ich als Ausgabe erhalten möchte, ist:
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
Aber was ich tatsächlich bekomme, ist nur:
wget http://example.com/search/link
bash
kehrt nur Rest , nicht mathematisches Modulo - Ergebnis. Dies bedeutet, dass während mathematisch-12 mod 10
ist8
, bash berechnen wird es als-2
. Sie können es mit einfachen Testecho $((-12 % 10))
(-2
) und vergleichen Sie es mitpython3 python3 -c "print(-12 % 10)"
(8
).$(())
Variablen automatisch erweitert, sodass Sie das$
mit dem nicht benötigeni
. Dies$((i % 5))
wird perfekt funktionieren.quelle
Sie müssen Ihre mathematischen Ausdrücke in $ (()) einfügen.
Einzeiler:
Mehrere Zeilen:
quelle
Dies könnte nicht zum Thema gehören. Aber für die wget in for-Schleife können Sie sicherlich tun
quelle