Difference between revisions of "HelloBash Ep3"
(→Gestion des arguments et des options) |
(→Ecrire et exécuter des scripts) |
||
Line 2: | Line 2: | ||
== Ecrire et exécuter des scripts == | == Ecrire et exécuter des scripts == | ||
− | Un premier script | + | === Un premier script === |
echo " #!/bin/bash" > /tmp/myscript.sh | echo " #!/bin/bash" > /tmp/myscript.sh | ||
Line 11: | Line 11: | ||
L'extension .sh est une convention pour les scripts shell en général. | L'extension .sh est une convention pour les scripts shell en général. | ||
+ | |||
+ | On voit qu'on peut utiliser le contenu brut du script comme STDIN de bash pour l'exécuter. | ||
+ | |||
+ | === Exécuter un script === | ||
Pour l'exécuter il faut ajouter le droit d'exécution sur le fichier | Pour l'exécuter il faut ajouter le droit d'exécution sur le fichier | ||
Line 17: | Line 21: | ||
bash -c /tmp/myscript.sh | bash -c /tmp/myscript.sh | ||
/tmp/myscript.sh | /tmp/myscript.sh | ||
+ | |||
+ | === Qualités et concepts inhérents aux scripts === | ||
+ | |||
+ | Toutes les commandes disponibles interactivement sont ajoutables dans un script. | ||
+ | |||
+ | Un script doit : | ||
+ | |||
+ | * être réutilisable - automatiquement (cron) ou avec des entrées utilisateurs différentes | ||
+ | * ne faire que le nécessaire - usage des structures logiques et des tests | ||
+ | * être programmé de manière logique et compréhensible - une structure claire et lisible | ||
+ | * s'exécuter sans erreurs - détection des échecs et abandon éventuel | ||
+ | |||
+ | Les concepts à maîtriser pour rédiger des scripts : | ||
+ | |||
+ | * Les entrées utilisateurs | ||
+ | * Les branches conditionnelles | ||
+ | * Les boucles | ||
+ | * La structure logique | ||
+ | * Le contrôle des statuts de sortie | ||
== Gestion des arguments et des options == | == Gestion des arguments et des options == |
Revision as of 00:02, 13 November 2019
Retour à la liste des épisodes
Contents
Ecrire et exécuter des scripts
Un premier script
echo " #!/bin/bash" > /tmp/myscript.sh echo "echo helloBash" >> /tmp/myscript.sh cat /tmp/myscript.sh | bash
L'entête #! ("Shebang" ou "Crunchbang") indique quel est l'interpréteur à utiliser (ici Bash, mais on pourrait en utiliser d'autre)
L'extension .sh est une convention pour les scripts shell en général.
On voit qu'on peut utiliser le contenu brut du script comme STDIN de bash pour l'exécuter.
Exécuter un script
Pour l'exécuter il faut ajouter le droit d'exécution sur le fichier
chmod 755 /tmp/myscript.sh bash -c /tmp/myscript.sh /tmp/myscript.sh
Qualités et concepts inhérents aux scripts
Toutes les commandes disponibles interactivement sont ajoutables dans un script.
Un script doit :
- être réutilisable - automatiquement (cron) ou avec des entrées utilisateurs différentes
- ne faire que le nécessaire - usage des structures logiques et des tests
- être programmé de manière logique et compréhensible - une structure claire et lisible
- s'exécuter sans erreurs - détection des échecs et abandon éventuel
Les concepts à maîtriser pour rédiger des scripts :
- Les entrées utilisateurs
- Les branches conditionnelles
- Les boucles
- La structure logique
- Le contrôle des statuts de sortie
Gestion des arguments et des options
cat ./myscript.sh #!/bin/bash echo "My name is $0" echo "My first argument is $1" ./myscript.sh foo
On voit donc que la commande est stockée dans la variable $0 et le premier argument dans $1.
Bash ne sait pas nativement reconnaître des options, le script ne voit que des arguments les uns derrière les autres, accessibles dans des variables numérotées.
cat ./myscript.sh #!/bin/bash echo -e "Arg1: $1 - Arg2: $2 - Arg3: $3 - Arg4: $4 - Arg5: $5 " ./myscript.sh Epstein did not kill himself
Pour utiliser des options une ligne de commande plus riche on utilise la commande getopts (voir plus loin).
Déclarer des variables
Faire des tests conditionnels
En cours de rédaction...