![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
Phoenix2025
j'ai suivi tes instructions mais j'ai toujours là même erreur récurante : fin de fichier prématurée
voici le nouveau code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#!/bin/bash -x
player1=`cat toto.txt | sed -n '1p'`
choice1=`cat toto.txt | sed -n '2p'`
player2=`cat toto.txt | sed -n '3p'`
choice2=`cat toto.txt | sed -n '4p'`
if $choice1=="1" && $choice2=="2" ==> echo "$player2 win" >>toto.txt fi
if $choice1=="1" && $choice2=="3" ==> echo "$player1 win" >>toto.txt fi
if $choice1=="2" && $choice2=="1" ==> echo "$player1 win" >>toto.txt fi
if $choice1=="2" && $choice2=="3" ==> echo "$player2 win" >>toto.txt fi
if $choice1=="1" && $choice2=="1" ==> echo "no winner" >>toto.txt fi
if $choice1=="3" && $choice2=="2" ==> echo "no winner" >>toto.txt fi
if $choice1=="3" && $choice2=="3" ==> echo "no winner" >>toto.txt fi |
[EDIT]en ce qui concerne les variables player et choice cela fonction super merci[/EDIT]
L'instruction "if" ne peut tester que des programmes ou des commandes (déjà dit). A moins que la variable "$choice" ne contienne un chemin vers une commande, ça ne fonctionnera pas.
Par ailleurs, l'instruction "player1=$(eval echo $1)" peut s'écrire plus simplement "player1=$1". De même l'instruction "player1=$player1" est totalement inutile ainsi que l'instruction "export"
Enfin l'instruction
if commande then instruction_unique fi
est mal écrite car il manque les séparateurs ";" pour que le shell sache où s'arrêter
if commande ; then instruction_unique ; fi
Personnellement, j'écrirais plutôt de façon détaillée
1 2 3 4
| if commande
then
instruction_unique
fi |
mais surtout, dans le cas d'une instruction unique, on peut éviter le if...fi de cette façon
commande && instruction_unique
Tu devrais cependant télécharger un tutoriel Shell Linux : http://linux.developpez.com/cours/ . Le temps que tu perdras à le lire tu le regagneras en tapant plus vite un code qui fonctionne...
Partager