Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question sur bash

2 réponses
Avatar
Alain Chappuis
Salut,
j'ai une petite question sur bash que je ne comprend pas.
Dans mon manuel (SuSE) la syntaxe if elif else donne ce
genre de code. A voir lorsque je l'exécute il y a une
erreur produite:

~/pro> estif
Variable TERM: dtterm
./testif: line 12: syntax error near unexpected token `else'
./testif: line 12: `else'

~/pro> o testif
#!/bin/bash
# test de script et de if else
#
# la variable globale TERM est testée dans ce cas
#
echo "Variable TERM: $TERM"
if test "$TERM" = xterm
then
echo "C'est du xterm qui est présent!"
elif test "$TERM" = dtterm
echo "C'est du dtterm qui est présent!"
else
echo "Variable TERM différente!"
fi
exit
---------------
Qui peut me dire pourquoi bash n'aime pas mon else?

Merci par avance.
Alain.
--
Alain Chappuis (Remove: pouriel to answer me in my address!)
(Enlevez: pouriel de mon adresse pour me répondre!)

2 réponses

Avatar
Stephane Chazelas
2006-06-20, 09:18(+02), Alain Chappuis:
[...]
./testif: line 12: syntax error near unexpected token `else'
./testif: line 12: `else'

~/pro> o testif
[...]

if test "$TERM" = xterm
then
echo "C'est du xterm qui est présent!"
elif test "$TERM" = dtterm
echo "C'est du dtterm qui est présent!"
else
echo "Variable TERM différente!"
fi
exit
---------------
Qui peut me dire pourquoi bash n'aime pas mon else?
[...]


Parce qu'il manque un "then" apres le elif.

Sinon, j'utiliserais case plutot:

case $TERM in
xterm)
...
;;
dtterm)
...
;;
esac


--
Stéphane

Avatar
Alain Chappuis
2006-06-20, 09:18(+02), Alain Chappuis:
[...]

./testif: line 12: syntax error near unexpected token `else'
./testif: line 12: `else'

~/pro> o testif


[...]

if test "$TERM" = xterm
then
echo "C'est du xterm qui est présent!"
elif test "$TERM" = dtterm
echo "C'est du dtterm qui est présent!"
else
echo "Variable TERM différente!"
fi
exit
---------------
Qui peut me dire pourquoi bash n'aime pas mon else?


[...]

Parce qu'il manque un "then" apres le elif.
Oh! merci Stephane...

Donc il y a y bug dans la doc SuSE à ce propos! car il manque
effectivement le "then", j'aurai du y penser après une condition
de test...


Sinon, j'utiliserais case plutot:

case $TERM in
xterm)
...
;;
dtterm)
...
;;
esac


J'ai le même exercice et il fonctionne à merveille!

Merci encore pour l'aide.
Alain.
--
Alain Chappuis (Remove: pouriel to answer me in my address!)
(Enlevez: pouriel de mon adresse pour me répondre!)