In diesem Artikel werde ich über die Teile schreiben, die ich beim Versuch, die for-Anweisung zu verwenden, nicht verstanden habe (insbesondere über die Verwendung von Variablen).
Grundform der for-Anweisung
für Variable in Werteliste
do
wird bearbeitet
done
Es gibt die folgenden Möglichkeiten, die for-Anweisung unter Linux zu verwenden.
Erstellen Sie eine Datei mit einem geeigneten Editor (z. B. Notepad) (verlängern Sie **. Sh **), schreiben Sie eine for-Anweisung in das obige Formular und lesen Sie sie unter Linux. Schreiben Sie die Zeichen "#! / Bin / bash" in die erste Zeile der Datei.
Machen Sie mit Notizblock usw. (hoge.sh)
#!/bin/bash
for i in 1 2 3
do
echo $i ##1 2 3 wird auf dem Bildschirm ausgegeben
done
Um die erstellte Datei (Shell-Skript) zu laden, geben Sie einfach ** Dateiname ** auf dem Linux-Bildschirm ein. Da Sie jedoch den Dateipfad angeben müssen, verwenden Sie "**. / Dateiname " (. ** bezieht sich auf das ** aktuelle Verzeichnis *). ( Legen Sie die erstellte Datei im Voraus im aktuellen Verzeichnis ab.)
Ausgabeergebnis
$ ./hoge.sh
1
2
3
Sie können den im Notizblock geschriebenen Inhalt auch wie oben auf dem Linux-Bildschirm kopieren und einfügen.
In diesem Fall wird die Markierung >
automatisch für jeden Zeilenumbruch hinzugefügt.
Befehls- und Ausgabeergebnis
$ for i in 1 2 3
> do
> echo $i
> done
1
2
3
Anstatt die Zeilen zu ändern, können Sie auch in eine Zeile schreiben, indem Sie ;
zu ** für Zeile ** und ** hinzufügen, bevor ** fertig **.
Befehls- und Ausgabeergebnis
$ for i in 1 2 3; do echo $i; done
1
2
3
Referenz: Bash in der Befehlszeile in einer Zeile (für Anweisung / if-Anweisung)
In der folgenden Erklärung verwenden wir die for-Anweisung nach der ** 2-Methode **.
Es ist im Grunde dasselbe wie die Verwendung von Variablen in Shell-Skripten. Wenn Sie nach "** Shell-Skriptvariablen **" suchen, gibt es viele Websites. Schauen Sie sich das an!
・ Einführung grundlegender Befehle für Shell-Skripte für Anfänger ・ Zusammenfassung der Grundkenntnisse des Shell-Skripts
Ich möchte einige Fälle kurz erläutern.
Der Wert der ** Variablen i
** kann in ** $ i
** verwendet werden. (Siehe Beispiel oben)
Wenn ** $ i
** und die Zeichenfolge aufeinanderfolgend sind, muss es $ {i}
sein.
$ for i in 1 2 3
> do
> echo $ixxx
> echo ${i}xxx
> done
## "ixxx"Existiert nicht, daher wird nichts ausgegeben.
1xxx ## "Wert der Variablen i(=1)" + "xxx"Wird ausgegeben.
2xxx
3xxx
Doppeltes Zitat"" ...Lesen Sie den Inhalt der Variablen (z. "$i" -> 1)
Einfaches Zitat'' ...Zeigen Sie die Zeichenfolge so an, wie sie ist (z. '$i' -> $ich)
Zurück Zitat`` ...Als Befehl lesen (z. `cat test.txt` -> test.Den Inhalt von txt ausgeben)
Unter Linux gibt es einen Unterschied zwischen "" "" "" "wie oben, verwenden Sie also unbedingt " "" ", wenn Sie Variablen in Anführungszeichen setzen **.
$ cat test01.txt
1xxxxxxxxxx
xxx2xxxxxxx
xxxxx3xxxxx
xxxxxxxx4xx
xxxxxxxxxx5
##Extrahieren Sie nur Zeilen mit 1 4 5
$ for i in 1 4 5
> do
> cat test01.txt | grep "$i"
> done
1xxxxxxxxxx
xxxxxxxx4xx
xxxxxxxxxx5
## $Zeilen extrahieren, die den String i enthalten (keine Ausgabe)
$ for i in 1 4 5
> do
> cat test01.txt | grep '$i'
> done
Referenz: [bash] Unterschied zwischen "" "," \ "und" "- eher Reisschule
Eine grobe Liste sieht so aus (ich denke, es gibt viele andere).
##Verschiebe i um 1 2 3 4 5
for i in 1 2 3 4 5
for i in {1..5}
for i in `seq 1 5`
for i in `seq 5`
for ((i=1; i<=5; i++))
##Bewege i um 2( 1 3 5 7 9 )
for ((i=1; i<=10; i=i+2)) ## (Erster Wert;Ich konditioniere;Wie man erhöht i(oder wie man reduziert))
for ((i=1; i<=10; i+=2))
##Ersetzen Sie i durch einen Buchstaben
for i in aa bb cc
##Lesen Sie jede Zeile in der Datei(Beachten Sie, dass die Schleife auch dann getrennt wird, wenn sie leer ist.;Siehe unten)
for i in `cat test.txt`
##Geben Sie eine Datei im Verzeichnis an
for i in *.txt
for i in `ls`
Referenz: [Für] Befehl (Anwendungsteil 2) - Wiederholen Sie die Verarbeitung in Kombination mit dem Ergebnis der Befehlsausführung [Für] Befehl (Anwendungsteil 3) - Wiederholen Sie die Verarbeitung durch Angabe der Häufigkeit
Es scheint, dass die Methode zum Lesen mit der "while" -Anweisung wichtiger ist als die for-Anweisung (→ [Siehe Postscript](#Additional note)). Es gibt verschiedene Muster. Beachten Sie jedoch, dass je nach Methode möglicherweise nur die letzte Zeile nicht gelesen wird, wenn die letzte Zeile der zu lesenden Datei keinen Zeilenumbruch aufweist.
Referenz: Kopieren und Einfügen ist möglich | Zeileweise mit bash / while read line: 5 Muster verarbeiten Lösung für BASH beim Lesen, ohne die letzte Zeile zu verarbeiten
Soweit ich untersucht habe, kann die im Anhörungsdokument (die folgende Methode) übergebene Methode das Problem vermeiden, daher denke ich persönlich, dass diese Methode besser ist.
$ cat test02.txt
1
2
3
4
5 ##Keine Zeilenumbrüche
##Letzte Zeile nicht gelesen
$ cat test02.txt | while read line
> do
> echo line : $line
> done
line : 1
line : 2
line : 3
line : 4
##Lesen Sie bis zur letzten Zeile
$ while read line
> do
> echo line : $line
> done << Hear
> `cat test02.txt`
> Hear
line : 1
line : 2
line : 3
line : 4
line : 5
Wie in Link oben erläutert, wird die Schleife bei for-Anweisungen nicht nur durch Zeilenumbrüche, sondern auch durch Leerzeichen, also jede Zeile, getrennt Wenn Sie jedes verarbeiten möchten, ist es vielseitiger, "while read line" zu verwenden.
$ cat test02.txt
1 x
2xx
3
4
5
##denn wird getrennt, auch wenn es leer ist
$ for i in `cat test02.txt`
> do
> echo line : $i
> done
line : 1
line : x
line : 2xx
line : 3
line : 4
line : 5
##während ist nicht durch Leerzeichen getrennt
$ while read line
> do
> echo line : $line
> done << Hear
> `cat test02.txt`
> Hear
line : 1 x
line : 2xx
line : 3
line : 4
line : 5
Recommended Posts