Shell batch

bonjour
je me tire les cheveux sur un if

j’ai se morceau de code

echo -e $BLEU"    Etes-vous sur de vouloir executer ce script ? Y/N"
read ANSWER

if [ $ANSWER == y ]
then
 ma commande
else
 je sort
fi

comment modifier le if de façon que si l’on repond “y” ou “Y” ma commande soit exécutée

merci a+

En utilisant -o (or) :

(cf man test)

ou sa variante « || » (mais il faut un double crochet pour ça) :

Si tu es fan d’expressions régulières, tu peux aussi faire :

[quote=“kna”]Si tu es fan d’expressions régulières, tu peux aussi faire :

Plus simple :

Salut,

answer=y if [[ $answer == [Yy] ]]; then echo "yess! "; else echo "oh, no"; fi
ou si les double-crochets ne sont pas disponibles :answer=Y case $answer in [Yy]) echo "yess! ";; *) echo "oh, no";; esac

:038 wouaa

sa déboule les solus

merci à tous, avec ça je pourrais me dépatouiller

a+

Principe du “TIMTOWTDI” pour le Batch!!!

On se rapproche de perl là, non?

Quand tu fais un truc un peut sophistiquer en shell tu te rapproche de toute manière de perl.

Je pense que le shell est bien plus TIMTOWTDI que perl (il suffit de voir des anciens fil où on présente des solution en sed+grep et en awk, avoir avec plusieurs manière de faire en awk, le tout pour un même problème).

Bonjour,

d’autres solutions/astuces :

avec bash>=4.0

if [[ "${ANSWER^y}" = Y ]]
then
...
fi

une autre en bash :

shopt -s nocasematch
if [[ "${ANSWER}" = Y ]]
then
...
fi

pour ce qui est de grep :

if grep -iq y <<< "${ANSWER}" then ... fi

Pour donner raison à MisterFreez, one other way to do it :