Bash: Accès par indirection ======
L'accès à une valeur par indirection est possible en shell. Pour cela il faut **procéder à deux substitutions de variable** l’une après l’autre. Le détail de la substitution de variable est abordé dans le wiki [[cours:informatiqu... phase de substitution on utilisera la commande **eval**. On indique au shell que le premier caractère
s au script bash courant sont accessibles via les variables **$1** à **$n**. La variable **$@** désigne l'ensemble des arguments.
**getopts** et **getop... milaires mais non identiques pour gérer de façon avancée les options et les arguments passés aux scrip... ée avec les commandes **while** et **case**, elle va permettre la gestion des options et de leur argum
en mode interactif l'option -i est précisée et la variable **PS1** est définie. Les options actives sont listées dans la variable **$-**.
Le script **~/.basrc** utilise la valeur de cette variable pour déterminer si l'exécution courante est interactive ou non et adapter son c
ebug}}
====== Débogage de scripts shell ======
Avant toute exécution, on peut vouloir valider la syntaxe d'un fichier de script. Pour cela on peut invoq... commandes sont affichées sur la sortie standard avant exécution préfixées par le caractère '+'.
Dans... mandes présentes dans le script seront affichées avant exécution.
<code bash>
#!/bin/bash -x
# Les co
===
Pour obtenir un nombre aléatoire dans l'intervalle [0-32767] depuis le shell, on peut utiliser la variable **$RANDOM**.
Pour limiter la valeur maximum de l'intervalle entre [0-N] avec N < 32767, on peut utiliser l'opérateur modulo. Lorsqu'o
les paramètres d'appel, produire une sortie décrivant l'usage.
* Code d'erreur en sortie en plus de... er et réutiliser les scripts.
* Par convention, variables locales en minuscules et globales ou exportées en majuscule.
* Assurer le dépilement des variables d'environnement propres a l’exécution du s
structure de contrôle **case** ou **selon** (équivalent du **switch... case** en C) permet d'effectuer différents traitements en fonction des valeurs attendues pour une variable donnée.
<code bash>
case "$C" in
"1")
do_this()
;;
"2" | "3
==
Les différents shells GNU/Linux déclarent une variable **IFS**((**I**nternal **F**ield **S**eparat... t de délimiter les arguments. On peut afficher la valeur de ces séparateurs de champ avec la commande suivante:
<code bash>
printf "%q\n" "$IFS"
</code>
hanger un nombre de base. Pour cela, utiliser les variables prédéfinies **ibase** et **obase**:
<code... ntrée utilise la base hexadécimale, on définie la variable a, spécifie ensuite que la sortie sera en b
_file.txt
0 directories, 3 files
# Afficher les valeurs après développement de '*'
echo *
fileA.txt ... mportement par défaut.
<code bash>
# Afficher la valeur de l'option
shopt dotglob
# Activer l'inclus