Définir la variable sur la sortie de la commande dans Bash

Fumbani Banda 24 mars 2022
  1. Substitution de commandes dans Bash
  2. Sortie de la commande bash vers la variable
Définir la variable sur la sortie de la commande dans Bash

Ce didacticiel illustre l’affectation de la sortie d’une commande à une variable dans bash à l’aide de la substitution de commande.

Substitution de commandes dans Bash

La substitution de commande est une fonctionnalité bash qui nous permet d’exécuter des commandes Linux et de stocker la sortie de la commande dans une variable bash. Une fois qu’une commande est exécutée à l’aide de la syntaxe de substitution de commande, la sortie standard de la commande remplace la commande, toutes les nouvelles lignes de fin étant supprimées.

La substitution de commande utilise deux syntaxes différentes pour stocker la sortie de la commande dans une variable.

Le premier type de syntaxe place la commande entre parenthèses et ajoute un signe $ au début, comme indiqué ci-dessous.

Chaque caractère entre parenthèses est traité comme faisant partie de la commande.

output=$(command)
output=$(command argument-1)
output=$(/path/to/command)
output=$(/path/to/command argument-1)

Le deuxième type de syntaxe utilise des backticks autour de la commande.

output=`command`
output=`command argument-1`
output=`/path/to/command`
output=`/path/to/command argument-1`

Sortie de la commande bash vers la variable

Nous utilisons les exemples suivants pour démontrer la substitution de commande dans un script bash.

Ci-dessous, nous utilisons la première syntaxe de parenthèses et un signe dollar au début. La commande whoami est exécutée et la sortie remplace la commande, qui est ensuite affectée à la variable user. Nous utilisons la commande echo pour afficher le message sur la sortie standard.

user=$(whoami)
echo "The logged in user is $user"

L’exécution de ce script affiche la sortie suivante.

The logged in user is delftstack

Ci-dessous, nous utilisons la syntaxe backticks. La sortie de la commande whoami est affectée à la variable user et echo est utilisé pour imprimer le message au terminal.

user=`whoami`
echo "The logged in user is $user"

L’exécution du script affiche la sortie ci-dessous.

The logged in user is delftstack

Dans le script ci-dessous, nous utilisons ls pour lister le contenu du dossier delftstack en utilisant la parenthèse et la syntaxe du signe dollar. La sortie de la commande ls est affectée à la variable files. La commande echo est utilisée pour imprimer le contenu de la variable files au terminal.

files=$(ls -l delftstack)
echo "$files"

L’exécution du script imprime la sortie suivante sur la sortie standard.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

Le script bash ci-dessous utilise la syntaxe backticks pour affecter la sortie de la commande ls à la variable files, et la commande echo est utilisée pour imprimer le contenu de la variable files sur la sortie standard.

files=`ls -l delftstack`
echo "$files"

L’exécution du script affiche la sortie suivante.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

Nous utilisons la syntaxe suivante pour affecter une commande multiligne à une variable dans le script bash.

variable_name=$(command \ 
argument 1 \ 
argument 2 \ 
argument 3)

Le script bash ci-dessous illustre l’affectation de la sortie d’une commande multiligne à une variable. La commande ls répertorie tout le contenu du dossier actuel et la sortie est redirigée vers la commande head. La commande head ne sélectionne que les 5 premières lignes de l’entrée de ls et redirige la sortie vers la commande grep. La commande grep fait correspondre la ligne avec le mot flow et l’imprime sur la sortie standard.

files=$(ls -l \
| \
head -5 \
| grep -i "flow")

echo $files

L’exécution du script affiche la sortie suivante.

drwxr-xr-x 1 fumba fumba 4096 Sep 30 09:29 airflow
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Article connexe - Bash Output