Introduction

  • Shell scripting permet d’automatiser des commandes Unix/Linux.
  • Les scripts shell se terminent généralement par .sh.
  • Le shebang #!/bin/bash en début de script indique l’interpréteur à utiliser.

Variables

  • Déclaration: variable_name=value
  • Accès: $variable_name ou ${variable_name}

Exemple:

name="ChatGPT" echo "Hello, $name!"

Commandes

  • Exécution de commandes: command arguments
  • Exécution de commandes et stockage de la sortie: output=$(command arguments)

Conditions

  1. Test simple:
if [ condition ]; then # code fi
  1. If-else:
if [ condition ]; then # code else # code fi
  1. If-elif-else:
if [ condition1 ]; then # code elif [ condition2 ]; then # code else # code fi

Opérateurs courants:

  • Égalité numérique: -eq
  • Non égalité numérique: -ne
  • Supérieur: -gt
  • Inférieur: -lt
  • Égalité de chaîne: =
  • Non égalité de chaîne: !=

Boucles

  1. for:
for variable in list; do # code done
  1. while:
while [ condition ]; do # code done

Fonctions

Déclaration:

function_name() { # code }

Appel:

function_name arguments

Paramètres script

  • $0: Nom du script.
  • $1, $2, ...: Arguments positionnels.
  • $#: Nombre d’arguments.
  • $@: Tous les arguments.
  • $?: Code de sortie de la dernière commande exécutée.

Redirections

  • Rediriger la sortie standard: command > file
  • Rediriger la sortie d’erreur: command 2> file
  • Rediriger la sortie standard et d’erreur: command &> file

Pipes

  • Passer la sortie d’une commande à une autre: command1 | command2

Arithmétique

  • Utiliser la double parenthèse: result=$((expression))

Exemple:

a=5 b=10 sum=$((a + b))

Conseils

  • Toujours utiliser des guillemets doubles autour des variables pour éviter des problèmes avec les espaces: echo "$variable"
  • Pour les tests, préférez [[ ... ]] (test avancé) à [ ... ] pour plus de flexibilité et moins d’erreurs.