Scripts bash
Un article de WindowsLinux.Net - Astuces pour Windows et Linux.
Sommaire |
Variables d'environnement
Sous linux certaines variables d'environnement sont déjà définies. Pour les afficher, utiliser la commande printenv.
$ printenv
Caractères d'échappement
| Ajoute des lignes blanches au texte. | ||
| Insére des lignes horisontales au texte | ||
| Fait biper le terminal | ||
| Insére un antislash | ||
| Envoie à votre imprimante un signal d'éjection. |
Exit
Afin de faire un script propre, il est conseillé de définir le status du script quand il se termine, la commande exit interromp le script immédiatement.
Exemple :
exit 0
Termine le script et lui donne le status "0" (succés), à l'inverse de :
exit 1
Termine votre script et lui donne le status de "1" (échec).
Exemple : tester root
La commande "id -u" donne le numéro ID de l'utilisateur courant. Root à le numéro 0.
if [ $(id -u) != "0" ]; then echo "You must be the superuser to run this script" >&2 exit 1 fi
>&2 envoie les erreurs hors de la console courante.
Autre(s) variables
$ echo $HOSTNAME
vous retourne le nom de votre machine.
Exemples
#!/bin/bash # creer_page - Un script pour créer un fichier HTML title="Informations système pour" cat <<- _EOF_ <HTML> <HEAD> <TITLE> $title $HOSTNAME </TITLE> </HEAD> <BODY> <H1>$title $HOSTNAME</H1> Par $USER </BODY> </HTML> _EOF_
#!/bin/bash # creer_page - Un script pour créer un fichier HTML ##### Constants TITLE="Informations système pour $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Mis a jour $RIGHT_NOW by $USER" ##### Main cat <<- _EOF_ <html> <head> <title>$TITLE</title> </head> <body> <h1>$TITLE</h1> <p>$TIME_STAMP</p> </body> </html> _EOF_
if [ $(id -u) != "0" ]; then echo "You must be the superuser to run this script" >&2 exit 1 fi
Observer l'exécution de votre script
Pour observer l'exécution de votre script, ajoutez "-x" à la première ligne de votre script, afin d'avoir ceci :
#!/bin/bash -x
La commande "set" peut aussi être utilisée avec l'option "-x" pour avoir le même résultat :
#!/bin/bash number=1 set -x if [ $number = "1" ]; then echo "Number equals 1" else echo "Number does not equal 1" fi set +x

