Bonjour,

Avec man test, je lis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
       -n STRING
              the length of STRING is nonzero
 
       STRING equivalent to -n STRING
 
       -z STRING
              the length of STRING is zero
Donc si je fais -n sur une variable, je peux savoir si elle est non-vide (true) ou vide (false). Or, dans le code suivant, la méthode 2 provoque une boucle infinie que je n'arrive pas à m'expliquer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
!/bin/bash
 
typeset LISTE="un deux trois quatre cinq"
typeset ITEM=""
typeset -i INDICE=1
 
ITEM=$(echo $LISTE | cut -d' ' -f $INDICE)
 
# METHODE UNE
echo "Methode une"
 
while true
do
        echo "$INDICE = $ITEM"
        let INDICE=$INDICE+1
        ITEM=$(echo $LISTE | cut -d' ' -f $INDICE)
        if [ -z $ITEM ]
        then
                break # Quitter le while true
        fi
done
 
# METHODE DEUX
echo
echo
echo "Methode deux"
 
let INDICE=1
 
ITEM=$(echo $LISTE | cut -d' ' -f $INDICE)
 
while [ -n $ITEM ]
do
        echo "$INDICE = $ITEM"
        let INDICE=$INDICE+1
        ITEM=$(echo $LISTE | cut -d' ' -f $INDICE)
done
Merci d'avance pour vos lumières