Ce guide élabore certaines des pratiques communes dans la programmation de bash.
Script bash
Bash est un programme Shell responsable de l'interprétation et de l'exécution des commandes. En plus d'exécuter les commandes manuelles, Bash prend également en charge les scripts. Ces scripts sont un ensemble de commandes déclarées dans un fichier texte. Les scripts bash sont un langage de programmation simple et accessible à apprendre sur Linux. C'est une exigence si vous êtes intéressé par les emplois d'administration du système.
Comme toute autre compétence, la persistance et la répétition vous aideront à améliorer. Bien qu'il n'y ait pas d'ensemble fixe de règles, voici certaines des habitudes qui peuvent considérablement améliorer la qualité de votre script.
Approprié
L'indentation est une grande partie du codage. La bonne indentation est primordiale pour avoir un code lisible et maintenable.
Une bonne indentation peut être une bouée de sauvetage si vous travaillez avec plusieurs niveaux de logique. L'indentation facilite la reconnaissance des couches logiques.
Voici un exemple de script multi-logique avec une indentation appropriée.
#!/ bac / bash
lire -p "Entrez une valeur" var_x
si [$ ((var_x% 2)) -eq 0]; alors
sortie 0
autre
sortie 1
Fi
Voici à quoi ressemblera le code sans indentation appropriée.
#!/ bac / bash
lire -p "Entrez une valeur" var_x
si [$ ((var_x% 2)) -eq 0]; alors
sortie 0
autre
sortie 1
Fi
Commentaire
Le commentaire est l'une des choses les plus importantes lorsqu'il s'agit de donner un sens aux codes. Les commentaires devraient expliquer diverses parties du code, surtout quand elle est complexe. Il est sans effort de se confondre sur plusieurs parties du code, même vos propres codes. S'il s'agit d'un grand projet et que d'autres travaillent probablement sur le même code à l'avenir.
Par exemple, voici un exemple de script avec et sans commentaires.
Nom d'utilisateur = 1 $
# Vérifiez l'existence du nom d'utilisateur
grep ^ $ nom d'utilisateur: / etc / passwd
Si [$? != 0]; alors
Echo "Aucun tel utilisateur: $ nom d'utilisateur"
sortie 1
Fi
utilisateur = 1 $
grep ^ $ nom d'utilisateur: / etc / passwd
Si [$? != 0]; alors
Echo "$ nom d'utilisateur non trouvé"
sortie 1
Fi
Retourner le code si quelque chose ne va pas
Quand quelque chose ne va pas, le retour d'une valeur non nulle est toujours une bonne idée. Un code peut fonctionner de travers à tout moment, en particulier avec les conditions. Avoir un code de retour pour travailler peut économiser une tonne de tracas. Cela rend le débogage plus efficace.
Dans cet exemple, nous déterminerons si un nombre est étrange ou même. Au lieu d'imprimer la sortie, le code de sortie signalera quel était le résultat.
#!/ bac / bash
lire -p "Entrez une valeur" var_x
si [$ ((var_x% 2)) -eq 0]; alors
sortie 0
autre
sortie 1
Fi
Le script existe lors de l'erreur
Dans de nombreuses situations, Bash continuera à exécuter le script même lorsqu'une partie spécifique échoue, un impact sur le reste du script.
Pour s'assurer que le script existe lors d'une erreur fatale, il est recommandé d'avoir les lignes suivantes au début.
$ set -o errexit
Parfois, Bash peut également essayer d'utiliser une variable non déclarée, provoquant une erreur logique. L'utilisation de la commande suivante garantira que Bash cessera d'exécuter le script s'il utilise une variable non déclaré.
$ set -o nom
Substitution de commandement
Dans les situations, vous devrez peut-être travailler avec la sortie d'une commande particulière. Nous pouvons le faire en utilisant la substitution de commande.
La sous-station de commande a différentes manières de mise en œuvre.
$ echo 'echo "Hello World"'
$ echo $ (Echo «Hello World)
Il est toujours recommandé d'utiliser la deuxième option
Nom de variable significatif
Les variables font partie intégrante d'un script bash complexe. Chaque variable doit avoir un nom propre qui signifie son utilisation.
Souvent, les modèles de noms peuvent également le temps; Les gens éviteront de taper quelques personnages supplémentaires en échange d'un gain de temps à court terme. Cependant, une telle pratique est une recette de catastrophe. En ce qui concerne le maintien à long terme d'un tel code, il peut être compliqué pour donner un sens à l'objectif d'une variable.
Il serait préférable que vous étiez également cohérent dans les variables de dénomination. Les modèles de noms de variables aléatoires peuvent également conduire à la confusion à l'avenir.
Regardez les deux exemples de codes, tous deux faisant la même tâche. Quel code est préférable de comprendre et de travailler avec?
#!/ bac / bash
lire -p "Entrez la longueur:" x
lire -p "Entrez la largeur:" Y
z = $ [$ x * $ y]
Echo "Zone: $ z"
#!/ bac / bash
lire -p "Entrez la longueur:" Longueur
lire -p "Entrez la largeur:" Largeur
zone = $ [$ la longueur * $ largeur]
Echo "Area: $ Area"
Dans Bash, toutes les variables d'environnement sont nommées avec des lettres majuscules. Il est recommandé d'utiliser des lettres minuscules pour des variables de script pour éviter les conflits.
Utilisation de fonctions
Dans la programmation bash, une fonction est un moyen de regrouper les commandes qui peuvent être exécutées plus tard. Cela aide à réduire la répétition du code. Les fonctions rendent également le code plus lisible et maintenable.
Maintenant, il existe des scénarios spécifiques où les fonctions ont du sens. Si vous utilisez une poignée de commandes focalisées, la configuration d'une fonction peut vous éviter beaucoup de problèmes. Si vous n'utilisez qu'une seule commande, alors avoir une fonction n'a aucun impact sur l'efficacité.
Identique aux variables, les noms de fonction doivent être significatifs.
fonction fn_odd ()
var_x local
lire -p "Entrer numéro" var_x
lire var_x
si [$ ((var_x% 2)) -eq 0]; alors
écho "même"
autre
Echo "Odd"
Fi
Types d'arguments
Dans Bash, il n'y a pas de moyen fixe de déclarer un type variable. Il peut donner lieu à la comparaison des variables de types de données contradictoires. S'assurer que les variables et les arguments sont le même type attendu vous feront économiser beaucoup de maux de tête.
Dans l'exemple suivant, le script imprimera si l'argument est un nombre ou non.
si ! ["1 $" -eq "1" 2> / dev / null]
alors
Echo "Erreur: pas le numéro"
sortie 1
Fi
Arguments manquants ou ordre du mauvais argument
C'est toujours une bonne idée de supposer que la saisie des utilisateurs aura probablement des données incorrectes, quoi qu'il arrive. La probabilité est plus élevée lorsque l'utilisateur doit saisir plus d'un argument.
Vous devez avoir des mécanismes de correction d'erreurs aux points d'entrée de l'utilisateur pour éviter la catastrophe en raison d'une mauvaise entrée utilisateur. Rendre l'instruction claire sur ce que l'utilisateur est censé faire.
Sortie appropriée
Lorsque vous exécutez vos scripts, les gens doivent savoir ce qu'ils doivent savoir. Ils ne devraient pas avoir à lire votre code pour comprendre son objectif ou ce qu'il fait.
Il devrait y avoir des commentaires sur l'écran expliquant ce qui se passe dans les coulisses à chaque étape. Par exemple, quelle serait l'expérience utilisateur si le gestionnaire de packages n'imprimait aucune sortie significative à différentes étapes de son opération?
Débogage
Après avoir écrit le script, Bash peut vérifier la syntaxe du script pour les erreurs sans exécution. Pour effectuer une vérification de syntaxe, utilisez la commande bash suivante.
$ bash -nn