6 Stimmen

Wie kann man eine Schleife in einem Bash-Skript erstellen?

Ich habe folgende Zeilen in einem Bash-Skript unter Linux:

...
mkdir max15
mkdir max14
mkdir max13
mkdir max12
mkdir max11
mkdir max10
...

Wie lautet die Syntax für das Einfügen in eine Schleife, so dass ich die Zahlen (15,14 ) nicht schreiben muss?

18voto

ghostdog74 Punkte 305138

Mit bash, ohne externe Befehle wie seq um Zahlen zu erzeugen.

for i in {15..10}
do
 mkdir "max${i}"
done

oder einfach

mkdir max{01..15} #from 1 to 15

mkdir max{10..15} #from 10 to 15

wenn Ihre Zahlen dynamisch generiert werden, können Sie eine for-Schleife im Stil von C verwenden

start=10
end=15
for((i=$start;i<=$end;i++))
do
  mkdir "max${i}"
done

9voto

Chen Levy Punkte 13918

Für diese Aufgabe ist keine Schleife erforderlich:

mkdir max{15..10} max0{9..0}

... aber wenn Sie ein Schleifenkonstrukt benötigen, können Sie eines der folgenden verwenden:

for i in $(seq [ <start> [ <step> ]] <stop>) ; do
     # you can use $i here
done

o

for i in {<start>..<stop>} ; do 
     # you can use $i here
done

o

for (( i=<start> ; i < stop ; i++ )) ; do
     # you can use $i here
done

o

seq [ <start> [ <step> ]] <stop> | while read $i ; do
     # you can use $i here
done

Beachten Sie, dass bei der letzten Variante der Wert von $i außerhalb der Schleife nicht erhalten bleibt, da die | die eine Sub-Shell startet

5voto

eumiro Punkte 193562
for a in `seq 10 15`; do mkdir max${a}; done

seq erzeugt Zahlen von 10 a 15 .

EDITAR: An diese Struktur war ich seit vielen Jahren gewöhnt. Als ich jedoch die anderen Antworten beobachtete, stellte ich fest, dass die {START..STOP} ist viel besser. Jetzt muss ich mich daran gewöhnen, Verzeichnisse auf diese viel schönere Weise zu erstellen: mkdir max{10..15} .

3voto

MOnsDaR Punkte 8000

Verwenden Sie eine for-Schleife

1voto

chrisaycock Punkte 34286
for i in {1..15} ; do
    mkdir max$i
done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X