linux Tutoriaux data-src-img=

Le shell script est le type de programmation le plus simple que vous puissiez écrire sous Linux. De plus, c’est une compétence nécessaire pour automatiser vos taches d’administration système, développer de nouvelles fonctionnalités simples, …
Dans ce tutoriel, nous allons vous présenter 10 astuces pratiques pour écrire des scripts efficaces et fiables.

Commentez vos scripts

Plus un conseil qu’une astuce, commenter votre code est valable pour tout type de programmation.
Écrire des commentaires dans vos scripts vous aidera (ou aidera celui qui éditera votre code) pour mieux comprendre les différentes sections qui les composent.
Pour les débutants, les commentaires en shell script débutent par le symbole # :

#Ceci est un commentaire

Prévoyez une sortie du script en cas d’échec

Il peut arriver qu’une commande de vos script échoue mais que votre bash continue à l’exécuter, pouvant affecter le reste des actions/évènements de votre script, pouvant aller jusqu’au plantage. Utilisez ces lignes pour quitter votre script si une commande échoue :

#Sortie du script en cas d'échec d'une commande
set -o errexit
#OU
set -e

Arrêtez un script si le bash utilise une variable non définie

Le bash peut également essayer d’utiliser une variable qui n’a pas été déclarée et ainsi causer un plantage logiciel.
Pour éviter cela, utiliser les lignes suivantes pour indiquer à votre script de s’arrêter s’il tente d’utiliser une variable non déclarée :

#Sortie du script en cas d'utilisation d'une variable non définie
set -o nounset
OU
set -u

Utiliser les double guillemets pour faire référence à une variable

Utilisez les doubles guillemets lorsque vous utilisez la valeur d’une variable vous évitera une séparation des termes (à cause des espaces) ou de de détecter des caractères spéciaux et les exclure de votre variable :

#!/bin/bash
echo "Mots sans les doubles guillemets"
echo
names="Jaguar Network Community"
for name in $names; do
echo "$name"
done
echo
echo "Mots avec les doubles guillemets"
echo
for name in "$names"; do
echo "$name"
done
exit 0

 

Sauvegardez (mots.sh) et exécutez votre script :

root@jn-community:~# ./mots.sh
Mots sans les doubles guillemets

Jaguar
Network
Community

Mots avec les doubles guillemets

Jaguar Network Community

Utilisez les fonctions dans vos scripts

Il est préférable d’utiliser des fonctions pour partitionner votre code et le rendre ainsi plus lisible dès qu’il se complexifie :

#1ère fonction
function ma_fonction(){
   command1;
   command2;
}

#2ème fonction
ma_fonction(){
   command1;
   command2;
}

#3ème fonction
ma_fonction(){ command1; command2; }

Utilisez = au lieu de == pour les comparaisons de chaines

Notez que == est un équivalent de = et par conséquent, vous pouvez utiliser un simple = pour les comparaisons de chaines :

valeur1="jaguar"
valeur2="network"
if [ "$valeur1" = "$valeur2" ]

Utilisez $(commande) au lieu de ‘command’ pour les substitutions

La substitution de commande remplace une commande par son résultat. Utilisez $(command) au lieu des simples guillemets command pour substituer la commande :

user=`echo “$UID”`
user=$(echo “$UID”)

Utilisez « Read-Only » pour déclarer des variables statiques

Une variable statique ne change pas, sa valeur ne peut pas être modifiée une fois qu’elle a été définie :

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

Utilisez les majuscules pour les variables d’environnement et les minuscules pour les variables personnalisées

Toutes les variables d’environnement du bash sont renseignées en majuscules, par conséquent, utilisez les minuscules pour les variables créées pour vos besoins afin d’éviter les conflits :

mon_script=”$HOME/Scripts/monscript.pl”
perl “$mon_script” -h  “$1”

Effectuez toujours un débogage pour les scripts longs

Si vous écrivez des scripts bash avec un nombre lignes de code conséquent, trouver des erreurs sera complexe. Pour corriger vos erreurs avant d’exécuter un script, effectuez un débogage :

bash -n script_faux.sh
script_faux.sh: line 9: syntax error: unexpected end of file