Fiche – Réponses aux questions Shell

>

1. Pour définir une variable utilisateur, quelle commande doit-on exécuter ?

En Bash, la syntaxe correcte est sans espace autour du signe =.

2. Laquelle des syntaxes suivantes est correcte ?

Les espaces autour de = sont tolérés si la valeur est entre guillemets.

3. Pour supprimer une variable, on utilise la commande unset ?

La commande unset var1 permet de supprimer la variable var1.

4. Un script shell est :

Un script shell est un fichier texte contenant des commandes, qui doit avoir la permission d'exécution (chmod +x).

5. Un script shell peut-il être lancé dans le shell courant ?

Oui, avec la commande source script.sh ou . script.sh.

6. Un script shell peut être lancé par un processus shell fils :

Oui, c'est le comportement par défaut : ./script.sh crée un sous-shell.

7. Un script shell peut contenir :

Tous ces éléments sont valides dans un script shell.

8. Parmi la liste suivante, quelles sont les variables réservées du shell ?

$!, $* et ${11} sont des variables réservées. $& n'existe pas.

9. La variable $0 représente le nom du script shell en cours d'exécution ?

$0 contient le nom du script ou du shell en cours.

10. Quelle commande permet de donner le droit d'exécution au propriétaire du script nommé essai1 ?

u+x ajoute le droit d'exécution pour le propriétaire.

11. Pour visualiser le contenu de la variable $#, on lance la commande suivante :

$# contient le nombre d'arguments passés au script.

12. Ces affirmations sont-elles exactes ?

$@ et $* contiennent les mêmes arguments, mais "$@" préserve les guillemets, contrairement à "$*".
$* utilise IFS comme séparateur, pas $@.

Extrait de script : Variables de paramètre ou de position

#!/bin/bash
# paramètres : Variables de paramètre ou de position
echo "Nom du script en cours d'exécution : $0"
echo "Nombre de paramètres transmis au script : $#"
echo "Numéro du processus du script en cours d'exécution $0 est : $$"
echo "Paramètre 1 du script $0 : $1"
echo "Paramètre 2 du script $0 : $2"
echo "Paramètre 3 du script $0 : $3"
echo "Liste de tous les paramètres du script $0 (avec \$*) : $*"
echo "Liste de tous les paramètres du script $0 (avec \$@) : $@"
IFS=:
echo "Le séparateur de paramètres est : $IFS"
echo "Liste de tous les paramètres du script $0 (avec \$*) : $*"
echo "Liste de tous les paramètres du script $0 (avec \$@) : $@"
for a in "$*"; do echo "$a"; done
for a in "$@"; do echo "$a"; done
exit 0

Ce script illustre l'utilisation des variables spéciales ($0, $#, $$, $1, etc.) et l'impact de IFS sur $* et $@.