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 ++nanstelle vonn=$((n+1))(3 Zeichen weniger) verwenden.