====== 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]]