Comment utiliser les extensions $ et $ {} dans un script shell

Comment utiliser les extensions $ et $ {} dans un script shell
Si vous utilisez un système Linux, vous savez peut-être déjà à quel point une interface shell est cruciale pour interagir avec votre système. Sur la plupart des distributions Linux, Bash est le shell par défaut que nous utilisons pour exécuter les commandes et exécuter des scripts. Un script shell est un ensemble de commandes qui, une fois exécutées, sont utilisées pour effectuer des fonctions utiles sur Linux. Ce .Le fichier sh, écrit par un utilisateur, contient toutes les commandes utilisées pour effectuer une tâche afin que nous n'ayons pas à exécuter ces commandes manuellement, une par une.

Dans ce tutoriel, nous expliquerons deux des extensions de bash les plus utiles utilisées dans les scripts de coquille:

  • $ () - la substitution de commande
  • $ - la substitution des paramètres / expansion variable

Une extension dans le shell est effectuée sur le script une fois qu'elle a été divisée en jetons. Un jeton est une séquence de caractères considérés comme une seule unité par la coquille. Cela peut être un mot ou un opérateur.

Nous avons exécuté tous les exemples et scripts mentionnés dans cet article sur un système de Debian 10 Buster. Cependant, vous pouvez facilement les reproduire sur la plupart des coquilles Linux. Nous utilisons la ligne de commande Debian par défaut, le terminal, pour ce tutoriel. Sur Debian, vous pouvez y accéder via la barre de recherche du lanceur d'applications comme suit:

Pour accéder au lanceur d'applications, appuyez simplement sur la touche Super / Windows de votre clavier.

$ () Substitution de commande

Selon le manuel officiel de référence GNU Bash:

«La substitution de commande permet à la sortie d'une commande de remplacer la commande elle-même. BASH effectue l'expansion en exécutant la commande et en remplaçant la substitution de commande par la sortie standard de la commande, par toute ligne de Newlines. Les nouvelles lignes intégrées ne sont pas supprimées, mais elles peuvent être supprimées pendant la division de mots." La substitution de commande se produit lorsqu'une commande est enfermée comme suit:

$ (commande)
ou
'commande'

Par exemple, les commandes ECHO suivantes remplacent la sortie de la commande de date comme entrée:

$ echo $ (date)
$ echo 'date'

Vous pouvez également utiliser la substitution de commande pour attribuer une valeur à une variable. Par exemple, nous allons imprimer la date d'aujourd'hui via la variable aujourd'hui comme suit:

$ Aujourd'hui = $ (date)
$ echo "$ aujourd'hui"

Une autre utilité de la substitution de commande est en boucles de shell pour obtenir des entrées. Ici, nous essaierons d'imprimer tout le .Fichiers TXT dans notre dossier Home à l'aide de la substitution de commande:

pour f in / home / sana / *.SMS
faire
écho "$ f"
fait

En utilisant la substitution de commande dans un script shell

Les exemples ci-dessus sont quelques façons dont vous pouvez utiliser la puissance de la substitution de commande dans votre script de shell. Voici un exemple de rapport d'état que nous pouvons imprimer en utilisant le script de shell suivant:

#!/ bac / sh
Echo *** Rapport d'état ***
Aujourd'hui = $ (date)
Echo "aujourd'hui est $ aujourd'hui"
Utilisateurs = $ (who | wc -l)
Echo "$ Les utilisateurs des utilisateurs sont actuellement connectés"
Uptime = $ (date; disponibilité)
Echo "Le temps de disponibilité est de la disponibilité $"

La substitution de commande a été utilisée trois fois dans ce script; pour imprimer la date, connectée aux utilisateurs et à la disponibilité. Nous avons enregistré le script comme suit:

L'a fait exécutable, puis l'a parcouru par la commande suivante:

$ chmod + x statut.shot
$ ./ Statys.shot

Voici la sortie de notre statut.script sh:

Vous pouvez, bien sûr, créer des scripts plus significatifs en suivant les exemples que nous venons de mentionner.

$ Substitution / expansion des paramètres

Un paramètre, en bash, est une entité qui est utilisée pour stocker les valeurs. Un paramètre peut être référencé par un nombre, un nom ou par un symbole spécial. Lorsqu'un paramètre est référencé par un nombre, il est appelé un paramètre de position. Lorsqu'un paramètre est référencé par un nom, il est appelé un variable. Lorsqu'un paramètre est référencé par un symbole spécial, cela signifie qu'il s'agit de paramètres de automatique avec des utilisations spéciales.

Expansion / substitution des paramètres est le processus de récupération de la valeur de l'entité / paramètre référencé. C'est comme si vous étendiez une variable pour récupérer sa valeur.

La syntaxe d'expansion des paramètres la plus simple possible est la suivante:

Voici comment vous pouvez utiliser l'expansion des paramètres dans Bash:

$ paramètre

Par exemple, l'utilisation la plus simple est de remplacer le paramètre par sa valeur:

$ name = "John Doe"
$ echo "$ nom"

Cette commande remplacera la valeur de la variable «nom» à utiliser par la commande echo:

Vous pourriez penser que la même chose peut être réalisée en évitant les accolades bouclées comme suit:

La réponse est que pendant l'expansion des paramètres, ces accolades bouclées aident à délimiter le nom de la variable. Expliquons ce que nous entendons par limiter ici. Permettez-moi d'exécuter la commande suivante sur mon système:

$ echo "Le nom de la personne est $ name_"

Le résultat n'a pas imprimé la valeur du nom de la variable car le système pensait que je faisais référence à la variable «name_». Ainsi, mon nom de variable n'était pas «délimité». Les accolades bouclées dans l'exemple suivant délimiteront le nom de la variable et renverront les résultats comme suit:

$ echo "Le nom de la personne est $ nom _"

Voici toutes les façons dont les variables sont remplacées dans la coquille:

$ variable Cette commande remplace la valeur de la variable.
$ variable: -word Si une variable est nul ou si elle n'est pas définie, le mot est substitué à la variable. La valeur de la variable ne change pas.
$ variable: = word Si une variable est nul ou si elle n'est pas définie, la valeur de la variable est définie sur mot.
$ variable:?message Si une variable est nul ou si elle n'est pas définie, le message est imprimé à l'erreur de bash standard.
$ variable: + word Si variable est réglé, mot est substitué à la variable. Cependant, la valeur de la variable elle-même ne change pas.

Les exemples ci-dessus sont quelques façons dont vous pouvez utiliser la puissance de la substitution variable dans Bash. Vous pouvez intégrer ces moyens d'utiliser l'expansion dans vos scripts de coquille pour réaliser de manière optimale votre tâche à accomplir.