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

Caractère d'échappement
Nom
Résultat
\n
newline
Ajoute des lignes blanches au texte.
\t
tab
Insére des lignes horisontales au texte
\a
alert
Fait biper le terminal
\\
antislash
Insére un antislash
\f
formfeed
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

Liens

Internes

Commandes de base sous linux

Externes

http://linuxcommand.org/writing_shell_scripts.php

http://linuxcommand.org/wss0110.php