====== Scripts Bash ======
===== Exemple simple d'un script shell =====
Créer un fichier "''.sh''" avec votre éditeur préféré :
$ vim exemple.sh
On peut utiliser [[cat]] pour l'afficher :
$ cat exemple.sh
echo Exemple de script shell
exit 0
Pour l'exécuter :
$ bash exemple.sh
Exemple de script shell
On peut également rendre le script exécutable et le lancer en mettant "''./''" devant :
$ chmod +x exemple.sh
$./exemple.sh
Exemple de script shell
Ça fonctionne mais l'interpréteur qui est appelé est l'interpréteur par défaut ( [[sh]] ). Or, [[bash]] est plus évolué et est donc préférable. On modifie donc le script pour ajouter cette première ligne :
#!/bin/bash
# ceci est un commentaire
echo Exemple de script shell
exit 0
===== Déclaration et affichage d'un tableau =====
==== Bases ====
On peut déclarer un tableau
#!/bin/bash
# Déclaration de deux tableaux
tab=("cat" "cd")
tableau[0]=hello
tableau[1]=bonjour
# Affichage les deux éléments de "tab"
echo ${tab[0]}
echo ${tab[1]}
# Afficher tous les éléments de "tableau"
echo ${tableau[@]}
# Une autre méthode d'affichage des éléments de "tableau"
for i in ${!tableau[@]}; do echo ${tableau[i]}; done
exit 0
Quand on lance le script :
$ ./liste_man.sh
cat
cd
hello bonjour
hello
bonjour
==== Tableau de tableau ====
J'ai essayé de faire du "tableaux dans un tableau" en bash... C'était pas une bonne idée mais je note quand même :
$ declare -A TAB_PROD=( ['ip']="192.168.1.1" ['port']="22"
$ declare -A TAB_INT=( ['ip']="192.168.160.1" ['port']="25" )
$ declare -A TABLEAU=( ['prod']=${TAB_PROD[@]} ['int']=${TAB_INT[@]} )
$ echo ${TABLEAU[@]}
192.168.1.1 22 192.168.160.1 25
Je peux accéder aux valeurs via le tableau de départ ou via le tableau de tableau :
$ echo ${TABLEAU[prod]}
192.168.1.1 22
$ echo ${TAB_PROD[@]}
192.168.1.1 22
Ou
$ echo ${TABLEAU[int]}
192.168.160.1 25
$ echo ${TAB_INT[@]}
192.168.160.1 25
Je n'ai pas réussi à isoler l'ip ou le port (sans un [[sed]], un [[cut]] ou un [[awk]]...).
===== Conditions =====
[[if]] avec une regex :
$ echo $salut
matrix-postgres
$ if [[ $salut =~ "matrix" ]]; then echo "tut"; fi
tut
===== Scripts utiles =====
Pour générer toutes les pages de [[man]] des [[commandes]], j'ai écrit le script [[liste_man.sh]].
===== Sources =====
[[https://doc.ubuntu-fr.org/tutoriel/script_shell|Script shell sur ubuntu-fr.org]]
[[http://abs.traduc.org/abs-5.0-fr/index.html|Guide avancé d'écriture des scripts Bash sur traduc.org]]