For-Loops sind wahrscheinlich der richtige Weg, aber hier ist eine unterhaltsame Alternative:
echo -e {1..10}"\n" |xargs -n1 some_command
Wenn Sie die Iterationsnummer als Parameter für Ihren Aufruf benötigen, verwenden Sie:
echo -e {1..10}"\n" |xargs -I@ echo now I am running iteration @
Bearbeiten: Es wurde zu Recht kommentiert, dass die oben angegebene Lösung nur mit einfachen Befehlsläufen (keine Pipes usw.) reibungslos funktionieren würde. Sie können immer eine verwendensh -c
, um kompliziertere Dinge zu tun, aber es lohnt sich nicht.
Eine andere Methode, die ich normalerweise verwende, ist die folgende Funktion:
rep() { s=$1;shift;e=$1;shift; for x in `seq $s $e`; do c=${@//@/$x};sh -c "$c"; done;}
Jetzt können Sie es nennen als:
rep 3 10 echo iteration @
Die ersten beiden Zahlen geben den Bereich an. Das @
wird in die Iterationsnummer übersetzt. Jetzt können Sie dies auch mit Rohren verwenden:
rep 1 10 "ls R@/|wc -l"
mit geben Sie die Anzahl der Dateien in den Verzeichnissen R1 .. R10.
let ++n
anstelle vonn=$((n+1))
(3 Zeichen weniger) verwenden.