# Comment écrire des scripts shell

Table of Contents

Les scripts shell permettent d’exploiter le shell comme un langage de programmation déjà préinstallé sur la plupart des distributions Linux. Ils vous permettront de créer des automatisations basiques.

Configuration de base

  1. Créer un fichier
Terminal window
touch my_script.sh
nano my_script.sh # Créer et ouvrir le fichier dans l'éditeur de texte nano
  1. Ajouter un shebang en haut du fichier, puis les instructions.
#!/usr/bin/env bash
echo "Hello, World!"
  1. Rendre le fichier exécutable
Terminal window
chmod +x my_script.sh
  1. Exécuter le script
Terminal window
./my_script.sh

Langage de script

Variables

Les variables en bash sont précédées d’un préfixe $. Par exemple :

Terminal window
name="John"
echo "Hello, $name!"

Paramètres

Les paramètres peuvent être passés à un script bash lors de l’exécution.

Terminal window
./my_script.sh John

La valeur des paramètres peut être accédée en utilisant $1, $2, etc. :

#!/usr/bin/env bash
echo "Hello, $1!"

Sortie : Hello, John!

Tu peux aussi utiliser la commande read pour obtenir une saisie utilisateur et la stocker dans une variable.

#!/usr/bin/env bash
echo "Enter your name:"
read name
echo "Hello, $name!"

Conditions

#!/usr/bin/env bash
if [ "$1" == "John" ]; then
echo "Hello, John!"
else
echo "Hello, stranger!"
fi

Boucles

Terminal window
for i in {1..5}; do ## On peut éviter le ; avec une nouvelle ligne comme dans l'exemple suivant
echo "Iteration $i"
done

Sortie : Iteration 1 Sortie : Iteration 2 …

Terminal window
for nom in Alice Bob Charlie
do
echo "Bonjour, $nom!"
done

Sortie : Bonjour, Alice! Sortie : Bonjour, Bob! Sortie : Bonjour, Charlie!

Terminal window
compteur=1
while [ $compteur -le 2 ]
do
echo "Compteur: $compteur"
((compteur++))
done

Sortie : Compteur: 1 Sortie : Compteur: 2

Exemples

Vérifier si une liste d’entrées est un fichier ou un répertoire

#!/usr/bin/env bash
if [[ "$#" -eq 0 ]]; then
echo "Usage: ./checkType.sh <path>"
exit 1
fi
for arg in "$@"; do
if [ -f "$arg" ]; then
echo "$arg is a file"
elif [ -d "$arg" ]; then
echo "$arg is a directory"
else
echo "$arg does not exist or is neither a file nor a folder"
fi
done

Changer le propriétaire d’une liste de fichiers

#!/usr/bin/env bash
echo "Files to update :"
read files
echo "New owner and group :"
read new_owner
for file in $files; do
if [[ ! -f "$file" ]]; then
echo "$file is not a file"
continue
fi
current_owner=$(ls -l "$file" | awk '{print $3}')
if [[ "$current_owner" != "$new_owner" ]]; then
sudo chown "$new_owner" "$file"
echo "$file owner $current_owner changed to $new_owner"
fi
done
Article suivant : Les droits de fichiers Linux

D'autres posts qui pourraient vous intéresser