Sommaire |
Sous linux certaines variables d'environnement sont déjà définies. Pour les afficher, utiliser la commande printenv.
$ printenv
| 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. |
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).
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.
$ echo $HOSTNAME
vous retourne le nom de votre machine.
Voici quelques exemples pour faire des boucles :
for I in {1..10}; do echo $I; done
for I in 1 2 3 4 5 6 7 8 9 10; do echo $I; done
for I in $(seq 1 10); do echo $I; done
for ((I=1; I <= 10 ; I++)); do echo $I; done
for ((I=1; I <= 29 ; I++)); do echo `printf "node%02d\n" $I`; done
#!/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
Utiliser le texte entré au clavier :
#!/bin/bash echo "Votre prénom :" read prenom echo "Bonjour $prenom !" exit 0
Lors de la ligne read, le script est mis en pause, et l'entrée du clavier passe dans la variable choisie.
Fichier de départ :
Ceci est la ligne n° 1 Ceci est la ligne n° 2 Ceci est la ligne n° 3 Ceci est la ligne n° 4 Ceci est la ligne n° 5
Ligne de commande :
while read line; do echo -e "$line\n"; done < file.txt
Script bash :
#! /bin/bash while read line do echo -e "$line\n" done < file.txt
Sortie à l'écran :
Ceci est la ligne n° 1 Ceci est la ligne n° 2 Ceci est la ligne n° 3 Ceci est la ligne n° 4 Ceci est la ligne n° 5
Lecture du fichier /etc/passwd et affichage avec variables :
#! /bin/bash while IFS=: read user pass uid gid full home shell do echo -e "$full :\n\ Pseudo : $user\n\ UID :\t $uid\n\ GID :\t $gid\n\ Home :\t $home\n\ Shell :\t $shell\n\n" done < /etc/passwd
ou en une ligne unique :
while read i; do echo -e "Paramètre : $i"; done < <(echo -e "a\nab\nc")
grep -E -v '^(#|;|$|[ ]*#)' /etc/samba/smb.conf
ou encore :
sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^$/d' /etc/samba/smb.conf
Pour plus d'informations, voir l'article Bash et Bashdb.
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
Si on désire qu'en cas d'échec d'une commande l'exécution du script s'arrête, plutôt que de continuer avec des erreurs, il suffit d'activer l'option suivante :
set -e
Pour désactiver cette option :
set +e
On peut aussi utiliser la ligne suivante :
command || { echo "Erreur"; exit 1; }
Si une variable n'est pas initialisée, on peut aussi arrêter le script, par l'utilisation de la commande suivante :
set -u
http://linuxcommand.org/writing_shell_scripts.php
http://linuxcommand.org/wss0110.php
Un autre lien, très intéressant pour débuter :
http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html
Enfin, de nombreuses informations sur les commandes grep, cut, tr, sed:
http://www.linux-kheops.com/doc/cours/jgourdin/shell-scripts/filtres.html