Votre premier script Bash

Introduction au scripting Bash

Alex Scriven

Data Scientist

Anatomie d'un script Bash

Un script Bash a quelques caractéristiques clés :

  • Il commence généralement par #!/usr/bash (sur sa propre ligne)
    • Ainsi, l'interpréteur sait qu'il s'agit d'un script Bash et d'utiliser Bash situé dans /usr/bash
    • Le chemin peut différer si vous avez installé Bash ailleurs, par exemple /bin/bash (tapez which bash pour vérifier)
  • Les lignes suivantes contiennent le code
    • Il peut s'agir de commandes ligne par ligne ou de constructions de programmation
Introduction au scripting Bash

Anatomie d'un script Bash

Pour enregistrer et exécuter :

  • L'extension de fichier est .sh
    • Techniquement inutile si la première ligne contient le shebang et le chemin vers Bash (#!/usr/bash), mais c'est la convention
  • Exécutable dans le terminal avec bash script_name.sh
    • Ou si vous avez indiqué la première ligne (#!/usr/bash), vous pouvez simplement lancer ./script_name.sh
Introduction au scripting Bash

Exemple de script Bash

Exemple de script complet (nommé eg.sh) :

#!/usr/bash
echo "Hello world"
echo "Goodbye world"

Peut être exécuté avec la commande ./eg.sh et afficherait :

Hello world
Goodbye world
Introduction au scripting Bash

Bash et commandes du shell

Chaque ligne de votre script Bash peut être une commande du shell.

Vous pouvez donc aussi inclure des pipes dans vos scripts Bash.

Considérez un fichier texte (animals.txt)

magpie, bird
emu, bird
kangaroo, marsupial
wallaby, marsupial
shark, fish

Nous voulons compter les animaux par groupe.

Introduction au scripting Bash

Bash et commandes du shell

Dans le shell, vous pourriez chaîner des commandes dans le terminal. Plaçons-les plutôt dans un script (group.sh) :

#!/usr/bash
cat animals.txt | cut -d " " -f 2 | sort | uniq -c

Maintenant (après avoir enregistré le script), exécuter bash group.sh donne :

   2 bird
   1 fish
   2 marsupial
Introduction au scripting Bash

Passons à la pratique !

Introduction au scripting Bash

Preparing Video For Download...