[Pour les débutants] Comment utiliser l'instruction for sous Linux (variables, etc.)

introduction

Dans cet article, j'écrirai sur les parties que je n'ai pas comprises en essayant d'utiliser l'instruction for (en particulier sur la façon d'utiliser les variables).

Comment utiliser pour la déclaration en premier lieu

Forme de base de la déclaration for


pour variable dans la liste de valeurs
do
En traitement
done

Il existe les manières suivantes d'utiliser l'instruction for sous Linux.

1. Charger en tant que script shell

Créez un fichier avec un éditeur approprié (tel que le Bloc-notes) (extend **. Sh **), écrivez une instruction for dans le formulaire ci-dessus et lisez-la sous Linux. Écrivez les caractères «#! / Bin / bash» sur la première ligne du fichier.

Faites avec le bloc-notes, etc. (hoge.sh)


#!/bin/bash
for i in 1 2 3
do
echo $i        ##1 2 3 est affiché à l'écran
done

Pour charger le fichier créé (script shell), tapez simplement ** nom de fichier ** sur l'écran Linux. Cependant, puisque vous devez spécifier le chemin du fichier, utilisez "**. / Nom du fichier " (. ** fait référence au ** répertoire courant *). ( Placer le fichier créé dans le répertoire courant à l'avance)

Résultat de sortie


$ ./hoge.sh
1
2
3

2. Ecrire sur la ligne de commande (plusieurs lignes)

Vous pouvez également copier et coller le contenu écrit dans le bloc-notes comme ci-dessus sur l'écran Linux. Dans ce cas, la marque > est automatiquement ajoutée à chaque saut de ligne.

Commande et résultat de sortie


$ for i in 1 2 3
> do
> echo $i
> done
1
2
3

3. Ecrivez sur la ligne de commande (1 ligne)

Au lieu de changer de ligne, vous pouvez également écrire sur une seule ligne en ajoutant ; à ** pour la ligne ** et ** avant ** terminé **.

Commande et résultat de sortie


$ for i in 1 2 3; do echo $i; done
1
2
3

Référence: Bash sur la ligne de commande sur une ligne (pour instruction / instruction if)

Dans l'explication suivante, nous utiliserons l'instruction for par la méthode ** 2 **.

Comment utiliser des variables dans l'instruction for

C'est fondamentalement la même chose que l'utilisation de variables dans les scripts shell. Si vous recherchez "** variables de script shell **", il existe de nombreux sites, alors n'hésitez pas à les consulter!

Introduction des commandes de base pour les scripts shell pour les débutantsRésumé des connaissances de base du script shell

Je voudrais expliquer brièvement certains cas.

1. Utilisez la valeur dans "$ nom de variable"

La valeur de la ** variable ʻi** peut être utilisée dans **$ i` **. (Voir l'exemple ci-dessus)

2. Si une chaîne de caractères est adjacente à une variable, utilisez "$ {nom de la variable}"

Si ** $ i ** et la chaîne sont consécutives, elle doit être $ {i}.

$ for i in 1 2 3
> do
> echo $ixxx
> echo ${i}xxx
> done
             ## "ixxx"N'existe pas, donc rien n'est produit.
1xxx         ## "Valeur de la variable i(=1)" + "xxx"Est sortie.

2xxx

3xxx

3. Placez les variables entre «» »« au lieu de «» »

Double citation"" ...Lire le contenu de la variable (ex. "$i" -> 1)
Simple citation'' ...Afficher la chaîne de caractères telle quelle (ex. '$i' ->  $je)
Retour citation`` ...Lire comme une commande (ex. `cat test.txt` -> test.Sortie du contenu de txt)

Sous Linux, il y a une différence entre `` '' " " comme ci-dessus, alors assurez-vous d'utiliser ** " " ** lorsque vous mettez des variables entre guillemets **.

$ cat test01.txt
1xxxxxxxxxx
xxx2xxxxxxx
xxxxx3xxxxx
xxxxxxxx4xx
xxxxxxxxxx5

##Extraire uniquement les lignes contenant 1 4 5
$ for i in 1 4 5
> do
> cat test01.txt | grep "$i"
> done
1xxxxxxxxxx
xxxxxxxx4xx
xxxxxxxxxx5

## $Extraire les lignes contenant la chaîne i (pas de sortie)
$ for i in 1 4 5
> do
> cat test01.txt | grep '$i'
> done

Référence: [bash] Différence entre "" "," \ '"et" `" -Plutôt école de riz

Comment rédiger une liste de valeurs

Une liste approximative ressemble à ceci (je pense qu'il y en a beaucoup d'autres).

##Déplacer i de 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++))

##Déplacer i de 2( 1 3 5 7 9 )
for ((i=1; i<=10; i=i+2))         ## (Première valeur;je conditionne;Comment augmenter i(ou comment réduire))
for ((i=1; i<=10; i+=2))

##Remplacez i par une lettre
for i in aa bb cc

##Lisez chaque ligne du fichier(Notez que la boucle sera séparée même si elle est vide.;Voir ci-dessous)
for i in `cat test.txt`

##Spécifiez un fichier dans le répertoire
for i in *.txt
for i in `ls`

Référence: [For] Command (Application Part 2) -Repeat processing in combination with the command execution result [For] Command (Application Part 3) - Répéter le traitement en spécifiant le nombre de fois

Bonus: lire chaque ligne du fichier (en lisant la ligne)

Il semble que la méthode de lecture avec l'instruction while soit plus importante que l'instruction for (→ [Se référer au post-scriptum](# Note supplémentaire)). Il existe plusieurs modèles, mais sachez que si la dernière ligne du fichier à lire n'a pas de saut de ligne, seule la dernière ligne peut ne pas être lue selon la méthode.

Référence: [Le copier-coller est possible | Traiter par ligne avec bash / while read line: 5 modèles](https://lanchesters.site/bash- while-read-line/) Solution pour BASH lors de la lecture ne traitant pas la dernière ligne

D'après ce que j'ai étudié, la méthode de transmission du document ici (la méthode ci-dessous) peut éviter le problème, donc je pense personnellement que cette méthode est bonne.

$ cat test02.txt
1
2
3
4
5    ##Aucun saut de ligne

##Dernière ligne non lue
$ cat test02.txt | while read line
> do
> echo line : $line
> done
line : 1
line : 2
line : 3
line : 4

##Lisez jusqu'à la dernière ligne
$ while read line
> do
> echo line : $line
> done << Hear
> `cat test02.txt`
> Hear
line : 1
line : 2
line : 3
line : 4
line : 5

Postscript

Comme expliqué dans [Lien ci-dessus](https://lanchesters.site/bash- while-read-line/), dans le cas de l'instruction for, la boucle est séparée non seulement par des sauts de ligne mais aussi par des espaces, donc chaque ligne Si vous souhaitez traiter chacun d'eux, il est plus polyvalent d'utiliser «while read line».

$ cat test02.txt
1 x
2xx
3
4
5

##car est séparé même s'il est vide
$ for i in `cat test02.txt`
> do
> echo line : $i
> done
line : 1
line : x
line : 2xx
line : 3
line : 4
line : 5

##tandis que n'est pas séparé par des blancs
$ 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

[Pour les débutants] Comment utiliser l'instruction for sous Linux (variables, etc.)
[Python] Organisation de l'utilisation des instructions
Comment utiliser les outils d'analyse de données pour les débutants
[Pour les débutants] Comment utiliser la commande say avec python!
Débutants! Commandes et utilisation de base de Linux!
Comment utiliser le contrôleur audio C216 sur Arch Linux
[Astuces] Comment utiliser l'iPhone comme caméra Web sous Linux
Comment utiliser Dataiku sous Windows
Remarques sur l'utilisation de pywinauto
Comment installer VMware-Tools sur Linux
Remarques sur l'utilisation des featuretools
Comment utiliser l'homebrew dans Debian
Comment installer aws-session-manager-plugin sur Manajro Linux
Comment utiliser mecab, neologd-ipadic sur colab
[Linux] Comment utiliser la commande echo
Je veux utiliser Linux sur mac
Comment mettre à jour PHP sur Amazon Linux 2
Comment utiliser l'Assistant Google sur Windows 10
Comment afficher des pictogrammes sur Manjaro Linux
Mémorandum sur l'utilisation du python gremlin
Comment installer des packages sur Alpine Linux
Comment installer le sous-système Windows pour Linux
Comment mettre à jour la sécurité sur CentOS Linux 8
Comment installer php7.4 sur Linux (Ubuntu)
Comment utiliser "deque" pour les données Python
Comment trouver des fichiers volumineux sous Linux
Comment utiliser l'authentification par empreinte digitale pour KDE
[Langage C] Comment utiliser la fonction crypt sous Linux [Hachage de mot de passe]
Comment utiliser MkDocs pour la première fois
Comment créer un plug-in Spigot (pour les débutants Java)
Comment utiliser Template Engine pour Network Engineer
Comment utiliser Python Kivy ④ ~ Exécution sur Android ~
Comment utiliser Tweepy ~ Partie 2 ~ [Suivez, aimez, etc.]
Comment installer Camunda Modeler sur Manjaro Linux
Comment rendre le Python des débutants plus rapide [numpy]
[Pour les débutants] Comment étudier la programmation Mémo privé
Comment trouver la corrélation pour les variables catégorielles
Utile pour changer les permissions sur Linux! Comment compter jusqu'à 31 d'une seule main.
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib