#1 Le 19/08/2013, à 01:23
- l0f4r0
Script bash - (($answer=="non"))
Bonsoir,
Je ne comprends pas pourquoi la sortie me renvoie toujours "Bye" que je choisisse de rentrer le texte "oui" ou "non". Quelqu'un aurait-il une piste ? Merci.
Code :
#!/bin/bash
if (($#==1)) && [ -f $1 ]
then
[ -f fic.txt ] && { echo "Le fichier fic.txt existe déjà. Souhaitez-vous l'écraser [oui/non] ?" ; read answer ; (($answer=="non")) && { echo Bye ; exit 10 ; } }
echo '' > fic.txt
while read ligne
do
echo Nom : $(echo $ligne | cut -d ',' -f1) >> fic.txt
echo Prénom : $(echo $ligne | cut -d ',' -f2) >> fic.txt
echo Age : $(echo $ligne | cut -d ',' -f3) >> fic.txt
echo Profession : $(echo $ligne | cut -d ',' -f4) >> fix.txt
echo Téléphone : $(echo $ligne | cut -d ',' -f5) >> fix.txt
echo '' >> fix.txt
done < $1
else echo Erreur : soit vous avez renseigné plusieurs paramètres, soit votre fichier .csv n\'est pas un fichier régulier existant
fi
Exemple de sortie :
~/Desktop $ ./csvTotxt.sh MonSuperCSV.csv
Le fichier fic.txt existe déjà. Souhaitez-vous l'écraser [oui/non] ?
oui
Bye
Hors ligne
#2 Le 19/08/2013, à 01:51
- Watael
Re : Script bash - (($answer=="non"))
salut,
(( est une évaluation arithmétique, si tu ne lui donnes pas un nombre à évaluer, forcément, le test renverra faux !
Dernière modification par Watael (Le 19/08/2013, à 01:51)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 19/08/2013, à 07:56
- serged
Re : Script bash - (($answer=="non"))
En général, pour ça, j'utilise un case, ce qui permet de traiter tous les cas :
echo -n "On le fait ?(O/N)"
read rep
case $rep in
o|O|y|Y) echo "on le fait"
n|N) echo "on le fait pas...."
*) echo "Vous dites ?"
esac
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne