Fiche – Réponses aux questions Shell
>
1. Pour définir une variable utilisateur, quelle commande doit-on exécuter ?
- a.
set var1 valeur1
- b.
var1=valeur1
- c.
var1 = valeur1
En Bash, la syntaxe correcte est sans espace autour du signe =.
2. Laquelle des syntaxes suivantes est correcte ?
- a.
Message="Bonjour tout le monde"
- b.
Message=Bonjour tout le monde
- c.
Message = "Bonjour tout le monde"
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 :
- a. un fichier qui contient des commandes shells.
- b. un fichier binaire.
- c. un fichier qui dispose de la permission 'X'.
- d. un fichier compilé.
- e. un fichier interprété.
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 :
- a. des définitions de variables d'environnement.
- b. des structures conditionnelles.
- c. des boucles.
- d. des appels à d'autres scripts shell.
Tous ces éléments sont valides dans un script shell.
8. Parmi la liste suivante, quelles sont les variables réservées du shell ?
- a. $!
- b. $&
- c. $*
- d. ${11}
$!, $* 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 ?
- a.
chmod a+x essai1
- b.
chmod u+e essai1
- c.
chmod u+x 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 :
- a.
echo #
- b.
echo $#
- c.
echo ${#}
$# contient le nombre d'arguments passés au script.
12. Ces affirmations sont-elles exactes ?
- a. $@ et $* contiennent la même information.
- b. "$@" et "$*" contiennent la même information.
- c. $* utilise les valeurs de la variable IFS comme séparateur de champs.
- d. $@ utilise les valeurs de la variable IFS comme séparateur de champs.
$@ 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 $@.