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