From 91595d034f408e8482f21facec97f7c2fc7fba6a Mon Sep 17 00:00:00 2001 From: jerome Date: Sun, 14 Apr 2024 16:55:49 +0200 Subject: ajout de exemple11 --- exemple1 | 6 +++++- exemple11 | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ exemple4 | 11 +++++++---- exemple6 | 14 ++++++++++++-- exemple7 | 5 +++++ 5 files changed, 77 insertions(+), 7 deletions(-) create mode 100755 exemple11 diff --git a/exemple1 b/exemple1 index 5b3b0af..66b82e4 100755 --- a/exemple1 +++ b/exemple1 @@ -1,4 +1,4 @@ -#!/usr/bin/bash + ### Affiche Hello World ### echo "Hello World !" @@ -21,3 +21,7 @@ echo "Votre mot de passe $password a bien été pris en compte..." # si on ne précise pas le nom de la variable, c'est $REPLY qui contient la saisie de l'utilisateur: read -p "Vas-y, dis-moi quelque chose : " echo "tu m'as dit $REPLY" + +# help printf - alternative à echo +printf "je m'appelle %s et j'ai %d ans\n" bob 10 + diff --git a/exemple11 b/exemple11 new file mode 100755 index 0000000..cb8c7fd --- /dev/null +++ b/exemple11 @@ -0,0 +1,48 @@ +#!/usr/bin/bash +# jeu du nombre mystérieux +#set -x +function aide(){ + echo "Usage: $(basename $0) [-h] [-l limite]" + exit +} + +if [ $# == 0 ];then + aide +fi + +while getopts :hl: OPTION; do + case $OPTION in + h) + aide + ;; + l) + limite=$OPTARG + ;; + *) + aide + esac +done + +echo " ---------------------- " +echo "< Jeu du Nombre Mystère >" +echo " ---------------------- " +secret=$(( RANDOM % $limite +1 )) +nb=0 +while [[ $secret != $reponse ]] +do + ((nb++)) + read -p "Entrez un nombre entre 0 et $limite : " reponse + if [[ $reponse = "q" || $reponse = "Q" ]];then + echo "Bye" + exit + fi + if [[ ! $reponse =~ ^[0-9]+$ || $reponse -gt $limite || $reponse -le 0 ]] ; then + echo "Hors de l'intervalle !" + elif [[ $reponse -gt $secret ]]; then + echo "Trop grand !" + elif [[ $reponse -lt $secret ]]; then + echo "Trop petit !" + fi +done +echo "Gagné en $nb coups !" + diff --git a/exemple4 b/exemple4 index b2dd116..570ef16 100755 --- a/exemple4 +++ b/exemple4 @@ -1,6 +1,6 @@ #!/usr/bin/bash -# La variable spéciale renvoie le code de sortie de la dernière commande : 0 si la commande s'est bien passée ou différent de 0 si la commande a échoué. +# La variable spéciale $? renvoie le code de sortie de la dernière commande : 0 si la commande s'est bien passée ou différent de 0 si la commande a échoué. # Exemple avec la primitive du shell test # help test @@ -33,9 +33,12 @@ test -d repert || mkdir repert && cd repert pwd cd - rmdir repert - -### Affiche les arguments de la ligne de commande du script ### +echo + +### Affiche les arguments postionnels de la ligne de commande du script ### ### $1, $2, $3... $* (ou $@) pour tous les arguments ### ### le script s'appelle $0 et a $# arguments ### -test $# -lt 1 && echo "$0 demande un ou plusieurs arguments" || echo "Hello $* !" +test $# -lt 1 && echo "$(basename $0) demande un ou plusieurs arguments" || echo "Hello $* !" + + diff --git a/exemple6 b/exemple6 index 96206b2..94523f5 100755 --- a/exemple6 +++ b/exemple6 @@ -1,4 +1,4 @@ -:#!/usr/bin/bash +#!/usr/bin/bash read -p "Entre une table de multiplication : " nb @@ -36,7 +36,7 @@ fi echo # Avec le code de sortie d'une commande Linux -read -p "Entre le nom d'un utilisateur : " utilisateur +read -p "Entrez le nom d'un utilisateur : " utilisateur while who | grep -q $utilisateur ; do echo "$utilisateur est connecté" sleep 5 @@ -58,3 +58,13 @@ while true; do echo "$i" sleep 1 done + +# while et shift : décalage des aguments positionnels ! +if [ "$#" -gt 0 ];then +while [ "$1" != "" ];do + echo "Hello $1" + shift +done +else + echo "Pas d'argument passé au script" +fi diff --git a/exemple7 b/exemple7 index 1c672d2..89c4d88 100755 --- a/exemple7 +++ b/exemple7 @@ -19,6 +19,11 @@ until [[ $os =~ [lL]inux ]]; do read -p "Quel est le meilleur os ? " os done +for arg in $@;do + echo "Hello $arg" +done +echo + # jeu du nombre mystérieux : #set -x echo " ---------------------- " -- cgit v1.2.3