Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:script_shell [Le 19/09/2023, 14:21] – [L'art d'écrire un script] 146.0.160.230 | tutoriel:script_shell [Le 24/04/2026, 14:08] (Version actuelle) – [La structure : `if`] note [] vs [[]] bcag2 | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| ====== Introduction aux scripts shell ====== | ====== Introduction aux scripts shell ====== | ||
| - | Un script shell permet d' | + | Un script shell permet d' |
| <code bash> | <code bash> | ||
| #!/bin/bash | #!/bin/bash | ||
| Ligne 112: | Ligne 112: | ||
| ===== Les variables ===== | ===== Les variables ===== | ||
| - | Il faut savoir | + | Il faut savoir |
| Cela dépendra de son USAGE, pour une opération arithmétique prochaine voir : let ma_variable sinon pour conserver une valeur : | Cela dépendra de son USAGE, pour une opération arithmétique prochaine voir : let ma_variable sinon pour conserver une valeur : | ||
| il suffit de lui donner un nom et une valeur avec l' | il suffit de lui donner un nom et une valeur avec l' | ||
| Ligne 252: | Ligne 252: | ||
| echo "Bien joué !" | echo "Bien joué !" | ||
| else | else | ||
| - | echo "Non mais quand même !!! SAPERLIPOPETTE | + | echo "Non mais quand même !!! C' |
| - | sleep 3 # Juste pour le fun du script qui enrage | + | sleep 3 # Juste pour le fun du script qui rage ;-p |
| - | echo "Désolé, | + | 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 | + | | -e fichier |
| - | | -d fichier | + | | -d répertoire |
| - | | -f fichier | + | | -f fichier |
| - | | -w fichier | + | | -w fichier |
| - | | -x fichier | + | | -x fichier |
| - | | f1 -nt f2 | + | | f1 -nt f2 |
| - | | f1 -ot f2 | + | | f1 -ot f2 |
| + | <note tip>Si vous préférez vérifier que votre // | ||
| === Opérateurs de comparaison numérique === | === Opérateurs de comparaison numérique === | ||
| Ligne 385: | Ligne 386: | ||
| ls -la | ls -la | ||
| elif [ " | elif [ " | ||
| - | echo " | + | echo " |
| else | else | ||
| echo "Il faut taper Y ou N!! Pas $ouinon" | echo "Il faut taper Y ou N!! Pas $ouinon" | ||
| fi | fi | ||
| </ | </ | ||
| + | <note tip> | ||
| + | Les crochets simples [] correspondent à des tests de condition conformes au shell POSIX.\\ | ||
| + | Les doubles permettent d' | ||
| + | Préférez les crochets simples pour une meilleure compatibilité. | ||
| + | </ | ||
| === Explication === | === Explication === | ||
| Ligne 413: | Ligne 418: | ||
| Exemple : | Exemple : | ||
| - | créer le répertoire | + | créer le répertoire |
| <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 |
| </ | </ | ||
| Ligne 535: | Ligne 540: | ||
| | | ||
| case " | case " | ||
| - | oui | o | O | Oui | OUI ) echo " | + | oui | o | O | Oui | OUI ) echo " |
| non | n | N | Non | NON ) echo " | non | n | N | Non | NON ) echo " | ||
| * ) echo "Ah bon ?";; | * ) echo "Ah bon ?";; | ||
| Ligne 547: | Ligne 552: | ||
| <code bash> | <code bash> | ||
| case " | case " | ||
| - | [nN] *) echo "Blablablabla...";; | + | [nN] *) echo "Blablabla...";; |
| n* | N* ) echo " | n* | N* ) echo " | ||
| </ | </ | ||
| Ligne 732: | Ligne 737: | ||
| # | # | ||
| if [ ${LANG:0:2} = " | if [ ${LANG:0:2} = " | ||
| - | echo "Vous aimez la choucroute | + | echo "Vous aimez les moules frites |
| elif [ ${LANG:0:2} = " | elif [ ${LANG:0:2} = " | ||
| - | echo "You love the... | + | echo "You love the... |
| elif [ ${LANG:0:2} = " | elif [ ${LANG:0:2} = " | ||
| - | echo "Te gusta el pata negra !" | + | echo "Te gusta el jamón |
| else | else | ||
| echo ":' | echo ":' | ||
| Ligne 745: | Ligne 750: | ||
| <code bash> | <code bash> | ||
| $ ./ | $ ./ | ||
| - | Vous aimez la choucroute | + | Vous aimez les moules frites |
| $ env LANG=en ./ | $ env LANG=en ./ | ||
| - | You love the... | + | You love the... |
| $ env LANG=es ./ | $ env LANG=es ./ | ||
| - | Te gusta el pata negra! | + | Te gusta el jamón |
| $ env LANG=it ./ | $ env LANG=it ./ | ||
| :'-( | :'-( | ||
| Ligne 826: | Ligne 831: | ||
| <code bash> | <code bash> | ||
| - | echo -e ' | + | echo -e ' |
| </ | </ | ||
| Ligne 877: | Ligne 882: | ||
| Exemple : | Exemple : | ||
| supposons que vous ayez une base de données, avec 3 catégories d' | supposons que vous ayez une base de données, avec 3 catégories d' | ||
| - | canard | + | éléphant |
| Votre script doit compter le nombre d' | Votre script doit compter le nombre d' | ||
| Deux possibilités s' | Deux possibilités s' | ||
| - | * calculer le nombre | + | * calculer le nombre |
| ou | ou | ||
| - | * calculer le nombre total de canard | + | * calculer le nombre total d' |
| Quel algorithme choisissez-vous ? | Quel algorithme choisissez-vous ? | ||
| - | Résultat : le premier car dans le deuxième il faut d' | + | Résultat : le premier car dans le deuxième il faut d' |
| ===== Liens ===== | ===== Liens ===== | ||
