1. Kontrollflussanweisung für
( 1) Für das Anweisungsformat
für Variable in Parameterliste tun Befehl getan
oder
für Variable in der Parameterliste; Befehl ausführen
Hinweis: Geben Sie jedes Mal, wenn Sie nur die Daten einer Schleifenliste erfassen, diese an den folgenden Codeblock weiter.
( 2) Beispiele für Aussagen
A , direkter Wert
[root @ test ~] # vi für-1.sh #! / bin / bash für i in einem b c d e do Echo-Test ist $ i erledigt [root @ test ~] # sh für-1.sh- Test ist ein Test ist b- Test ist c Test ist d Test ist e [root @ test ~] #
B. Wert in Variable
[root @ test ~] # vi for-2.sh #! / bin / bash list = "a b c d e" für i in $ list do echo test ist $ i done [root @ test ~] # sh for-2.sh test ist ein Test ist b Test ist c Test ist d Test ist e [root @ test ~] #
C , nimm den Wert aus dem Befehl
[root @ youxi1 ~] # vim d.sh #! / bin / bash for i in `Kopf -5 / etc / passwd` tun echo $ i getan [root @ Test ~] # sh for-3.sh root: x : 0: 0: root: / root: / bin / bash bin: x: 1: 1: bin: / bin: / sbin / nologin daemon: x: 2: 2: daemon: / sbin: / sbin / nologin adm: x: 3: 4: adm: / var / adm: / sbin / nologin lp: x: 4: 7: lp: / var / spool / lpd: / sbin / nologin [root @ test ~] #
( 3) Benutzerdefiniertes Shell-Separator
Standardmäßig verwendet die Basis-Shell Leerzeichen, Tabulatoren und Zeilenumbrüche als Trennzeichen. Angepasst als Trennzeichen durch IFS .
Geben Sie ein einzelnes Zeichen als Trennzeichen an:
IFS =: #Use: Doppelpunkt als Trennzeichen
IFS kann ein einzelnes Zeichen als Trennzeichen angeben, IFS =: (unter Verwendung eines Doppelpunkts als Trennzeichen); IFS kann auch mehrere Zeichen als Trennzeichen angeben, IFS = \ n:; (unter Verwendung eines Backslash, n, Doppelpunkt, Semikolon als Separator). Hinweis: In IFS sind $ '\ n' und $ '\ t' Zeilenumbrüche und Tabulatoren.
A. Beispiel 1
[root @ test ~] # vim a.sh #! / bin / bash list = "a1 a2 b1 b2 \" Hallo Welt \ "" for i in $ Liste tun echo $ i getan [root @ Test ~] # sh a .sh a1 a2 b1 b2 "Hallo Welt"
B. Geben Sie \ n Wagenrücklauf als Trennzeichen der for- Anweisung an
[root @ test ~] # vi for-4.sh #! / bin / bash IFS = $ '\ n' für i in `Kopf -2 / etc / passwd` tun echo "$ i" getan [root @ test ~ ] # sh for-4.sh root: x: 0: 0: root: / root: / bin / bash bin: x: 1: 1: bin: / bin: / sbin / nologin [root @ test ~] #
( 4) Zur Angabe in C-Sprache
A. Grammatikformat
für ((i = 0; i <10; i ++)) keine Befehle getan
B. Einzelne variable Schleife
[root @ test ~] # vi for-5.sh #! / bin / bash für ((i = 1; i <= 3; i ++)) do echo num ist $ i done [root @ test ~] # sh für -5.sh num ist 1 num ist 2 num ist 3 [root @ test ~] #
C , zum Verschachteln (multivariat)
[root @ test ~] # vi for-6.sh #! / bin / bash für ((a = 1, b = 5; a <6; a ++, b--)) do echo num ist $ a - $ b done [root @ test ~] # sh für-6.sh num ist 1 - 9 num ist 2 - 8 num ist 3 - 7 num ist 4 - 6 num ist 5 - 5 [root @ test ~] #
D , Dreieck drucken
[root @ test ~] # vi für-7.sh #! / bin / bash für ((i = 1; i <5; i ++)); do für ((j = 1; j <= i; j ++)) ; echo -n '*' erledigt echo -e "\ n" erledigt [root @ test ~] # sh für-7.sh * ** *** **** [root @ test ~] #
-e Interpretiere die maskierten Zeichen \ t Registerkarte \ n Wagenrücklauf \ b lösche das vorherige Zeichen \ a ertönt ein Alarm \ 033 [32m $ var \ 033 [0m 32 --- grün 31 --- rot- n kein Zeilenvorschub
Persönliche öffentliche Nummer: