Bases de l’automatisation et des scripts Bash (partie 1) –
L’automatisation d’une tâche répétitive a tendance à apporter de la joie au développeur Bash: au lieu de taper des commandes sans fin encore et encore, un script fait simplement le travail de manière répétitive. Bash est idéal pour une telle automatisation. Cette série vous permettra de démarrer…
Sommaire
Qu’est-ce que Automatisation Bash?
Le shell Bash est un puissant shell Linux qui permet une automatisation en profondeur des tâches répétitives. Non seulement le shell Bash Linux est un choix de premier ordre pour les ingénieurs DevOps, bases de données et tests, mais chaque jour, les utilisateurs peuvent bénéficier de compétences Bash lentement apprises et en constante augmentation. Bash est également un langage de script et de codage qui grandit sur vous. Je codifie activement dans Bash depuis 2012 et je l’ai utilisé beaucoup plus longtemps que cela.
Bash se prête également à de nombreux domaines d’application et cas d’utilisation différents. Par exemple, vous pouvez facilement l’utiliser pour la gestion de Big Data, et étonnamment, il semble se prêter extrêmement bien à cette tâche en raison de la myriade d’outils de traitement de texte disponibles en son sein, ou disponibles sous forme de packages faciles à installer. Il est également très adapté pour la planification et la maintenance de sauvegarde et de base de données, ou pour la gestion de solutions de stockage de fichiers volumineux, l’automatisation de serveurs Web et bien plus encore.
Une chose que j’ai trouvée est que chaque fois que le problème suivant se présente, un peu de recherche dans un moteur de recherche, ou les différents sites Web Stackoverflow, donnera rapidement non seulement une solution au problème, mais aussi une opportunité de grandir et d’apprendre. C’est une expérience très similaire à une personne qui apprend l’éditeur vi
où il en va de même; chaque fois qu’un problème se présente, la solution est proche.
Cette mini-série composée de trois parties est la première, et nous y examinerons les bases de l’automatisation et des scripts Bash.
Case!
Vous vous demandez peut-être quel genre de titre il s’agit. Et vous auriez raison, à moins que vous ne parliez à un développeur Linux chevronné. Ils souriraient au mieux. C’est parce que les deux premières lettres d’un script Bash bien écrit seraient toujours, eh bien, Shebang!
Il y a deux caractères, à savoir #!
qui peut être placé en haut d’un script, qui indique au shell quel interpréteur peut, devrait et sera utilisé pour traiter le script en cours. Il se trouve que ce symbole dans son ensemble s’appelle Case dans son ensemble.
Ainsi, pour développer notre déclaration précédente: la première ligne d’un script Bash bien écrit devrait commencer par #!/bin/bash
pour indiquer au shell (quel que soit le shell utilisé, cela pourrait être par exemple bash
ou sh
ou zsh
) que nous voulons le binaire /bin/bash
(notre shell Bash) pour exécuter ce code.
Mettons cela en pratique, en définissant un petit script test.sh
comme suit:
#!/bin/bash echo 'Hello CloudSavvyIT Readers!'
Vous pouvez créer ce script en utilisant votre éditeur de texte préféré, qui serait de préférence un éditeur qui n’utilise que des polices monospace comme vi, vigueur, nano ou un éditeur basé sur du texte brut dans votre bureau Linux, et de préférence en évitant des choses comme un traitement de texte comme OpenOffice Writer etc. car ils peuvent écrire des données ou des caractères binaires supplémentaires indésirables dans notre script. En d’autres termes; nous devons utiliser du texte brut.
Une fois ce script défini, nous le rendons exécutable en exécutant chmod +x test.sh
sur la ligne de commande. Ensuite, nous pouvons démarrer le script simplement en appelant son nom préfixé par ./
: ./test.sh
Paramètres d’entrée
Dès que vous commencez à écrire des scripts, vous constaterez probablement que vous souhaitez transmettre des paramètres d’entrée au script. Une façon de faire est d’utiliser les paramètres de position simples qui sont disponibles par défaut dans Bash. Jetons un coup d’œil à un exemple de script test2.sh
, que nous définissons comme suit:
#!/bin/bash echo "${1}"
Ici, nous avons utilisé le paramètre positionnel ${1}
. Cette variable reflètera le premier mot (séparé par un espace par défaut) qui a été passé à notre script, sauf si une citation est utilisée. Voyons comment cela fonctionne:
Après avoir rendu notre script exécutable à nouveau avec chmod +x test2.sh
nous exécutons la même chose et passons un seul mot hello
comme premier paramètre de position (${1}
). Le résultat est que hello
nous est renvoyé en écho.
En effet, lorsque le script a été lancé, la variable ${1}
(ou $1
bien que je recommande de toujours mettre des guillemets autour des noms de variables) a été défini sur la valeur du premier paramètre positionnel; le premier mot ou chaîne entre guillemets après le nom du script.
Ensuite nous sommes passés hello world
, mais cela ne faisait écho qu’à hello
retour à nous. La raison est simplement; le deuxième mot (séparé par défaut par un espace) est considéré comme le deuxième paramètre de position et est donc initialisé comme ${2}
dans le script, pas ${1}
.
Nous avons contourné ce comportement en mettant des guillemets autour de l’entrée lorsque nous avons passé 'Hello CloudSavvyIT Readers!'
. Les guillemets simples ou doubles auraient tous deux fonctionné, bien que leur fonctionnement diffère, plus à ce sujet dans la prochaine partie de cette série. Le résultat est que notre premier paramètre de position ${1}
est défini sur le texte intégral Hello CloudSavvyIT Readers!
, et donc la même chose nous est renvoyée.
Si vous souhaitez en savoir plus sur les variables, nos Fonctions Bash et Variables locales et Exporter des variables dans Bash: les articles Pourquoi et Comment peuvent également vous intéresser.
Emballer
Dans cet article, nous avons passé en revue le premier ensemble de bases de l’automatisation et des scripts Bash. Nous avons appris ce qu’est l’automatisation Bash et un Shebang, et comment commencer à transmettre des variables d’entrée à nos scripts. Dans la prochaine partie de cette série, nous examinerons les citations de variables et plus encore! Restez à l’écoute!