Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:script_shell [Le 12/02/2024, 14:20]
81.247.240.195 ancienne révision (Le 19/09/2023, 14:21) restaurée pour vandalisme
tutoriel:script_shell [Le 01/10/2025, 10:53] (Version actuelle)
bcag2 [La commande test] -e vs -f et `! -e`
Ligne 5: Ligne 5:
 ====== Introduction aux scripts shell ====== ====== Introduction aux scripts shell ======
  
-Un script shell permet d'​automatiser une série d'​opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui  seront exécutées de manière séquentielle. Fantastique.+Un script shell permet d'​automatiser une série d'​opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui  seront exécutées de manière séquentielle.
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Ligne 252: Ligne 252:
     echo "Bien joué !"     echo "Bien joué !"
   else   else
-    echo "Non mais quand même !!! SAPERLIPOPETTE ​C'​ÉTAIT $1 ET NON PAS $Reslt ​ESPECE DE NOUILLE ​!!!" +    echo "Non mais quand même !!! C'​ÉTAIT $1 ET NON PAS $Reslt ​PETIT FRIPON ​!!!" 
-    sleep 3 # Juste pour le fun du script qui enrage ​;-p +    sleep 3 # Juste pour le fun du script qui rage ;-p 
-    echo "Désolé, ​je te bannis de ubuntu-fr.org ! Et schbim ​!! Dommage tu ne peux rien contre moi !!!"+    echo "Donc je te bannis de ubuntu-fr.org ! Et toc !! Tu ne peux rien contre moi !!!"
     exit 1     exit 1
   fi   fi
Ligne 266: Ligne 266:
 Exemple: besoin de définir des plages de valeurs (1 à 500 puis 501 à 1000 puis 1001 à 1500…) Exemple: besoin de définir des plages de valeurs (1 à 500 puis 501 à 1000 puis 1001 à 1500…)
 <code bash> <code bash>
-id_per_step = 500+id_per_step=500
 for (( i=0; i<8; i++ )); do for (( i=0; i<8; i++ )); do
  (( min_step_id = 1 + $i * $id_per_step ))  (( min_step_id = 1 + $i * $id_per_step ))
Ligne 284: Ligne 284:
  
 ^ Syntaxe ^ Fonction réalisée ^ ^ Syntaxe ^ Fonction réalisée ^
-| -e fichier ​     | renvoie 0 si fichier existe. ​                          | +| -e fichier ​(ou répertoire) ​     | renvoie 0 si fichier/​répertoire ​existe. ​                          | 
-| -d fichier ​     ​| renvoie 0 si fichier existe et est un répertoire. ​     +| -d répertoire ​                | renvoie 0 si fichier existe et est un répertoire. ​                ​
-| -f fichier ​     | renvoie 0 si fichier existe et est un fichier ​'​normal'​.| +| -f fichier ​                   | renvoie 0 si fichier existe et est un fichier ​(pas un répertoire).| 
-| -w fichier ​     | renvoie 0 si fichier existe et est en écriture. ​       +| -w fichier ​                   | renvoie 0 si fichier existe et est en écriture. ​                  ​
-| -x fichier ​     | renvoie 0 si fichier existe et est exécutable. ​        ​+| -x fichier ​                   | renvoie 0 si fichier existe et est exécutable. ​                   
-| f1 -nt f2       ​| renvoie 0 si f1 est plus récent que f2.                +| f1 -nt f2                     ​| renvoie 0 si f1 est plus récent que f2.                           ​
-| f1 -ot f2       ​| renvoie 0 si f1 est plus vieux que f2.                 ​|+| f1 -ot f2                     ​| renvoie 0 si f1 est plus vieux que f2.                            | 
 +<note tip>Si vous préférez vérifier que votre //​fichier/​répertoire//​ N’existe PAS, //-e// -> //! -e//</​note>​
  
 === Opérateurs de comparaison numérique === === Opérateurs de comparaison numérique ===
Ligne 385: Ligne 386:
     ls -la     ls -la
 elif [ "​$ouinon"​ = "​n"​ ] || [ "​$ouinon"​ = "​N"​ ]; then elif [ "​$ouinon"​ = "​n"​ ] || [ "​$ouinon"​ = "​N"​ ]; then
-    echo "​Ok, ​Aurevoir! "+    echo "​Ok, ​bye! "
 else else
     echo "Il faut taper Y ou N!! Pas $ouinon"​     echo "Il faut taper Y ou N!! Pas $ouinon"​
Ligne 413: Ligne 414:
  
 Exemple : Exemple :
-créer le répertoire ​titi s'il n' existe pas+créer le répertoire ​toto s'il n' existe pas
 <code bash> <code bash>
-[ ! -d /tmp/titi ] && mkdir /tmp/titi +[ ! -d /tmp/toto ] && mkdir /tmp/toto 
-[ -d /tmp/titi ] || mkdir /tmp/titi +[ -d /tmp/toto ] || mkdir /tmp/toto 
-test ! -d /tmp/titi && mkdir  /tmp/titi +test ! -d /tmp/toto && mkdir  /tmp/toto 
-rm -rf /tmp/titi;mkdir /tmp/titi+rm -rf /tmp/toto;mkdir /tmp/toto
 </​code>​ </​code>​
  
Ligne 535: Ligne 536:
   ​   ​
 case "​$on"​ in case "​$on"​ in
-    oui | o | O | Oui | OUI ) echo "​Allez ​boire un Thé !";;+    oui | o | O | Oui | OUI ) echo "​Allez ​faire du café !";;
     non | n | N | Non | NON ) echo "​Programmez !";;     non | n | N | Non | NON ) echo "​Programmez !";;
     * ) echo "Ah bon ?";;     * ) echo "Ah bon ?";;
Ligne 547: Ligne 548:
 <code bash> <code bash>
 case "​$truc....."​ in case "​$truc....."​ in
-    [nN] *) echo "Blablablabla...";;+    [nN] *) echo "Blablabla...";;
     n* | N* ) echo "​Bla....";;​     n* | N* ) echo "​Bla....";;​
 </​code>​ </​code>​
Ligne 732: Ligne 733:
 #​favoritefood #​favoritefood
 if [ ${LANG:0:2} = "​fr"​ ]; then if [ ${LANG:0:2} = "​fr"​ ]; then
-    echo "Vous aimez la choucroute ​!"+    echo "Vous aimez les moules frites ​!"
 elif [ ${LANG:0:2} = "​en"​ ]; then elif [ ${LANG:0:2} = "​en"​ ]; then
-    echo "You love the... ​raclette ​!"+    echo "You love the... ​pudding ​!"
 elif [ ${LANG:0:2} = "​es"​ ]; then elif [ ${LANG:0:2} = "​es"​ ]; then
-    echo "Te gusta el pata negra !" ​   ​+    echo "Te gusta el jamón ​!" ​   ​
 else else
     echo ":'​-("​     echo ":'​-("​
Ligne 745: Ligne 746:
 <code bash> <code bash>
 $ ./​favoritefood $ ./​favoritefood
-Vous aimez la choucroute ​!+Vous aimez les moules frites ​!
 $ env LANG=en ./​favoritefood $ env LANG=en ./​favoritefood
-You love the... ​raclette!+You love the... ​pudding ​!
 $ env LANG=es ./​favoritefood $ env LANG=es ./​favoritefood
-Te gusta el pata negra!+Te gusta el jamón ​!
 $ env LANG=it ./​favoritefood $ env LANG=it ./​favoritefood
 :'-( :'-(
Ligne 826: Ligne 827:
  
 <code bash> <code bash>
-echo -e '​\033[1;​30;​47m ​titi \033[0;32m est sur \033[1;33m un bateau \033[0m'​+echo -e '​\033[1;​30;​47m ​toto \033[0;32m est sur \033[1;33m un bateau \033[0m'​
 </​code>​ </​code>​
  
Ligne 877: Ligne 878:
 Exemple : Exemple :
 supposons que vous ayez une base de données, avec 3 catégories d'​enregistrements possibles : supposons que vous ayez une base de données, avec 3 catégories d'​enregistrements possibles :
-canard ​bleu, canard ​blanc, ​canard ​rose ayant chacun 30 individus.+éléphant ​bleu, éléphant ​blanc, ​éléphant ​rose ayant chacun 30 individus.
 Votre script doit compter le nombre d'​éléphants bleus et blancs. Votre script doit compter le nombre d'​éléphants bleus et blancs.
 Deux possibilités s'​offrent à vous : Deux possibilités s'​offrent à vous :
-  * calculer le nombre ​de canard verts canard violets+  * calculer le nombre ​d'​éléphants bleus éléphants blancs
 ou ou
-  * calculer le nombre total de canard ​- nombre ​de canard ​roses+  * calculer le nombre total d'​éléphants ​- nombre ​d'​éléphants ​roses
  
 Quel algorithme choisissez-vous ? Quel algorithme choisissez-vous ?
  
-Résultat : le premier car dans le deuxième il faut d'​abord calculer le nombre total de canard.+Résultat : le premier car dans le deuxième il faut d'​abord calculer le nombre total d'​éléphants,​ donc un calcul en plus :-P .
  
 ===== Liens ===== ===== Liens =====
  • tutoriel/script_shell.1707744057.txt.gz
  • Dernière modification: Le 12/02/2024, 14:20
  • par 81.247.240.195