Scripts : variables et arguments
La ligne shebang et le droit d'exécution, l'affectation sans espaces, les guillemets simples et doubles, la substitution de commande et le calcul entier, read, et les paramètres $0, $1, $#, $@ : lire un script Bash et prévoir ce qu'il affiche.
- 26 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Variable shell : de quoi s'agit-il ?
Voir la réponse
Nom auquel le shell associe un texte, posé par
nom=valeursans aucun espace autour du=et relu avec$nom.Sans le
$, le shell ne lit pas la variable :echo nomaffiche le motnom, alors queecho $nomaffiche sa valeur.Le script
s.shci-dessous est lancé par./s.sh a "b c" d. Qu'affiche-t-il ?
```bash
#!/bin/bash
echo $#
echo "$2"`3puisb c4puisb c3puisb4puisb
Voir la réponse
3puisb cLes guillemets autour de
b cen font un seul argument : il y en a donc trois, et le deuxième estb c.Pour lancer un script par
./s.sh, il faut le droit d'exécution sur le fichier, posé avec … ; sa ligne …, en tête, désigne l'interpréteur qui l'exécutera.Voir la réponse
Pour lancer un script par
./s.sh, il faut le droit d'exécution sur le fichier, posé avec chmod +x ; sa ligne shebang, en tête, désigne l'interpréteur qui l'exécutera.Sans le droit d'exécution, le lancement direct échoue (
Permission denied) ;bash s.shfonctionne quand même, car le fichier n'est alors que lu. Un shebang vers un chemin qui n'existe pas donnebad interpreter.Paramètre positionnel : de quoi s'agit-il ?
Voir la réponse
Valeur reçue sur la ligne de lancement d'un script et désignée par son rang :
$1pour la première,$2pour la deuxième, et ainsi de suite.$0est le nom du script lui-même,$#le nombre de valeurs reçues,"$@"la liste de toutes ces valeurs, chacune restant un seul mot.Un script écrit sous Windows, lancé par
./s.sh, répondbash: ./s.sh: /bin/bash^M: bad interpreter: No such file or directory, alors que/bin/bashexiste. Quelle correction faut-il ?- Donner le droit d'exécution au script avec
chmod +x s.sh - Remplacer la première ligne par
#!/bin/sh, plus portable - Installer Bash, qui manque à l'emplacement
/bin/bash - Convertir ses fins de ligne Windows en fins de ligne Unix, avec
dos2unix
Voir la réponse
Convertir ses fins de ligne Windows en fins de ligne Unix, avec
dos2unixLe
^Mest le retour chariot que Windows place en fin de ligne : le système cherche un interpréteur nommébashsuivi de ce caractère, qui n'existe pas. Sans le droitx, le message seraitPermission denied, et un autre shebang garderait le même^M.- Donner le droit d'exécution au script avec