Bash : aller encore plus loin avec les bonnes pratiques

Magazine
Marque
GNU/Linux Magazine
Numéro
192
Mois de parution
avril 2016
Domaines


Résumé
Dans le précédent article, nous avons déjà présenté un ensemble de conventions et d'astuces permettant d'améliorer grandement la lisibilité et la maintenance de scripts Bash. Dans ce second article, nous allons aller encore plus loin et discuter de nombreux aspects de l'interpréteur, et de la syntaxe qui lui est associée, qui assureront la robustesse de vos scripts.

Cet article couvre un ensemble de techniques et de mécanismes spécifiques à Bash qui, utilisés systématiquement, apportent beaucoup de robustesse et de fiabilité à l'exécution des scripts.

Sans surprise, le premier point que nous allons évoquer dans cet article concerne la plus primitive des primitives de la programmation : les variables. Nous étudierons ensuite un ensemble de techniques permettant de gérer proprement les erreurs lors de l'exécution du script, avant de finir par une section « rubrique à brac », contenant une série d'astuces et de techniques en tout genre.

1. Protéger ses variables

1.1 Overquoting...

Vous en avez probablement déjà fait l'expérience, les scripts shell sont relativement fragiles. Il suffit parfois de passer un mauvais argument pour obtenir un comportement totalement différent de celui qu'on attendait. Un exemple rapide à l'aide de la commande cp :

function copy() {

local src=${1}

local dest=${2}


cp ${src} ${dest}

}


$ copy a b

$ copy a "b d"...

Cet article est réservé aux abonnés. Il vous reste 94% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Surveiller son système avec Monit

Magazine
Marque
Linux Pratique
HS n°
Numéro
49
Mois de parution
novembre 2020
Domaines
Résumé

La supervision d’un système en production demeure un enjeu aussi complexe qu’essentiel. Il existe de nombreuses solutions, très complètes, de supervision, mais la plupart adoptent une approche centralisée, qui demande l’utilisation de ressources dédiées. Aujourd’hui, nous étudierons une approche alternative, une solution de supervision décentralisée, nommée Monit.

Fabric, le couteau suisse de l’automatisation

Magazine
Marque
Linux Pratique
Numéro
122
Mois de parution
novembre 2020
Domaines
Résumé

Fabric est une bibliothèque Python et une interface en ligne de commandes facilitant l’utilisation de SSH, que ce soit pour des applications ou dans le but d’automatiser certaines tâches répétitives d’administration système. La grande force de Fabric est d’être particulièrement simple à utiliser.

Comprendre les bases de données relationnelles

Magazine
Marque
Linux Pratique
Numéro
122
Mois de parution
novembre 2020
Domaines
Résumé

Indispensables pour le stockage et le traitement massif de données, les bases de données relationnelles sont partout. Si elles sont utilisées principalement pour l’informatique de gestion, on les rencontre également dans des domaines aussi divers que les sites web, les systèmes d’exploitation ou même les jeux vidéo. Dans cet article, nous allons vous faire découvrir les principaux concepts qui sous-tendent leur fonctionnement.

Automatiser intégralement la mise en place de Wildfly avec Ansible

Magazine
Marque
Linux Pratique
HS n°
Numéro
49
Mois de parution
novembre 2020
Domaines
Résumé

Si les outils comme Ansible permettent d’aller très loin dans l’automatisation d’un déploiement logiciel, ils sont souvent limités dans leurs capacités de réglage fin d’un outil aussi complexe et avancé qu’un serveur Java EE tel que Wildfly (ou son pendant commercial, JBoss EAP). Afin de résoudre cette problématique, l’outil JCliff a été développé pour permettre à Puppet (un concurrent d’Ansible) de s’intégrer sans difficulté avec ce serveur applicatif. Cet outil est maintenant aussi intégré avec Ansible sous la forme d’une collection et cet article propose un tour exhaustif des capacités d’automatisation du déploiement et de la configuration des sous-systèmes de Wildfly à l’aide de cette nouvelle extension.