[Für Anfänger] Verwendung der for-Anweisung unter Linux (Variablen usw.)

Einführung

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).

Wie man die Aussage überhaupt benutzt

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.

1. Laden Sie als Shell-Skript

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

2. Schreiben Sie in die Befehlszeile (mehrere Zeilen)

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

3. Schreiben Sie in die Befehlszeile (1 Zeile)

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 **.

Verwendung von Variablen in der for-Anweisung

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ängerZusammenfassung der Grundkenntnisse des Shell-Skripts

Ich möchte einige Fälle kurz erläutern.

1. Verwenden Sie den Wert in "$ Variablenname"

Der Wert der ** Variablen i ** kann in ** $ i ** verwendet werden. (Siehe Beispiel oben)

2. Wenn eine Zeichenfolge neben einer Variablen liegt, verwenden Sie "$ {Variablenname}".

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

3. Schließen Sie Variablen in "" "anstelle von" "ein

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

Wie schreibe ich eine Liste von Werten

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

Bonus: Lesen Sie jede Zeile in der Datei (während Sie die Zeile lesen)

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

Nachtrag

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

[Für Anfänger] Verwendung der for-Anweisung unter Linux (Variablen usw.)
[Python] Organisieren der Verwendung für Anweisungen
Verwendung von Datenanalysetools für Anfänger
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Anfänger! Grundlegende Linux-Befehle und Verwendung!
Verwendung von C216 Audio Controller unter Arch Linux
[Tipps] Verwendung des iPhone als Webkamera unter Linux
Verwendung von Dataiku unter Windows
Hinweise zur Verwendung von Pywinauto
So installieren Sie VMware-Tools unter Linux
Hinweise zur Verwendung von featuretools
Wie benutzt man Homebrew in Debian?
So installieren Sie das aws-session-manager-Plugin unter Manajro Linux
Wie man Mecab, neologd-ipadic auf Colab verwendet
[Linux] Verwendung des Befehls echo
Ich möchte Linux auf dem Mac verwenden
So aktualisieren Sie PHP unter Amazon Linux 2
So verwenden Sie Google Assistant unter Windows 10
So zeigen Sie Piktogramme unter Manjaro Linux an
Memorandum über die Verwendung von Gremlin Python
So installieren Sie Pakete unter Alpine Linux
So installieren Sie das Windows-Subsystem für Linux
So aktualisieren Sie die Sicherheit unter CentOS Linux 8
Wie installiere ich php7.4 unter Linux (Ubuntu)
Verwendung von "deque" für Python-Daten
So finden Sie große Dateien unter Linux
Verwendung der Fingerabdruckauthentifizierung für KDE
[C-Sprache] Verwendung der Krypta-Funktion unter Linux [Passwort-Hashing]
So verwenden Sie MkDocs zum ersten Mal
So erstellen Sie ein Spigot-Plug-In (für Java-Anfänger)
Verwendung von Template Engine für Network Engineer
Verwendung von Python Kivy ④ ~ Ausführung unter Android ~
Verwendung von Tweepy ~ Teil 2 ~ [Folgen, Gefällt mir usw.]
So installieren Sie Camunda Modeler unter Manjaro Linux
Wie man Python für Anfänger schneller macht [numpy]
[Für Anfänger] Wie man Programmierung studiert Private Memo
So finden Sie die Korrelation für kategoriale Variablen
Nützlich zum Ändern von Berechtigungen unter Linux! Wie man mit einer Hand bis zu 31 zählt.
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Verwendung von Image-Match
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?