summaryrefslogtreecommitdiff
path: root/exemple7
blob: 1c672d2784cd2ea7f735ef971d4df8b479fe7941 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/bash

# le mot clé [[
# help [[
# [[ est une amélioration bash de la primitive [. Il comporte plusieurs améliorations qui en font un meilleur choix si vous écrivez des scripts ciblant bash, notamment :
# il gère les chaînes vides et les chaînes avec des espaces de manière plus intuitive (plus besoin d'entourer les variables non initialisées de guillemets...)
# il permet d'utiliser les opérateurs && et || pour les tests et < et > pour les comparaisons de chaînes
# il possède un opérateur =~ pour effectuer des correspondances d'expressions régulières.

# Exemple complètement objectif...
# voir la négation '!'
# attention, ne pas utiliser les guillements ou les apostrophes pour les regexps qui les transforment en chaînes litérales !
while [[ ! $os =~ [lL]inux ]]; do
  read -p "Quel est le meilleur os ? " os
done
unset os
echo "Encore une fois !"
until [[ $os =~ [lL]inux ]]; do
  read -p "Quel est le meilleur os ? " os
done

# jeu du nombre mystérieux :
#set -x
echo " ----------------------  "
echo "< Jeu du Nombre Mystère >"
echo " ----------------------  "
  secret=$(( RANDOM % 100 +1 ))
  nb=0
  while [[ $secret != $reponse ]]
  do
    ((nb++))
    read -p "Entrez un nombre entre 0 et 100 : " reponse
    if [[ ! $reponse =~ ^[0-9]+$ || $reponse -gt 100 || $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 !"