Script shell \ if else elif fin sinon fin si
tmedtcom
Messages postés
60
Statut
Membre
-
tmedtcom Messages postés 60 Statut Membre -
tmedtcom Messages postés 60 Statut Membre -
Bonjour,
salut a tous et a toutes.
j'ai besoin de l'aide pour un script shell juste pour la stricture d'une suite de
il y a une partie du svripte qui fait remplie les case du tableau chaque case contient ine chaine de caractère
et voiçi la forme général du script:
- premièrement je ne sait pas comment fermer l'instruction if et elif c'est a dir remplacer fin si non et fin si par le syntaxe necessaire.
- deuxièment je pentse que les faute son dans les lignes du condition if
==> j'espère que je trouve dans cette forum le réponce et merci d'avance
salut a tous et a toutes.
j'ai besoin de l'aide pour un script shell juste pour la stricture d'une suite de
si (....) alors ..... si non si (....) alors................
il y a une partie du svripte qui fait remplie les case du tableau chaque case contient ine chaine de caractère
et voiçi la forme général du script:
j=$(($i - 1))
# j est le nombre de case du tableau
#p1;p2;.....;p7 sont des paramètres de sortie je les fait initiatisation
p1=""
p2=""
p3=""
p4=""
p5=""
p6=""
p7=""
for k in `seq 0 $j`
do
if [ ${tab[$k]} = "-A" ]
then
for l in `seq 1 $j`
do
#traitement du chaine INPUT OUTPUT FORWARD
if [а ${tab[$l]} = "INPUT" ] && [ $p1 = ""] ]
then
p1="entrée au machine"
elif [ ${tab[$l]} = "OUTPUT" ] && [ $p1 = ""] ]
then
p1="sortie du machine"
elif [ [ ${tab[$l]} = "FORWARD"а ] && [ $p1 = ""] ]
then
p1="passé a travers la machine"
fin si non
fin si non
fin si
#accept drop reject
if [ [ ${tab[$l]} = "ACCEPT" ] && [ $p2 = ""а] ]
then
p2="accepté"
elif [ [ ${tab[$l]} = "REJECT" ] && [ $p2 = ""а] ]
then
p2="rejeté"
elif [ [ ${tab[$l]} = "DROP" ] &&[ $p2 = ""а] ]
then
p2="dropé"
fin si non
fin si non
fin si
#protocol
if [ [ ${tab[$l]} = "-p" ] && [ $p3 = ""а] ]
then
p3="${tab[$l+1]}"
elif [ $p3="" ]
then
p3="quelque soit"
fin si non
fin si
#@ip-source
if [ [ ${tab[$l]} = "-s" ] && [ $p4= ""а] ]
then
p4="${tab[$l+1]}"
elif [ $p4="" ]
then
p4="quelque soit"
fin si non
fin si
#@ip-destination
if [ [ ${tab[$l]} = "-d" ] && [ $p5 = ""а] ]
then
p5="${tab[$l+1]}"
elif [ $p5="" ]
then
p5="quelque soit"
fin si non
fin si
#port-source
if [ [ ${tab[$l]} = "--sport" ] && [ $p6= ""а] ]
then
p6="${tab[$l+1]}"
elif [ $p6="" ]
then
p6="quelque soit"
fin si non
#port-destination
if [ [ ${tab[$l]} = "--dport" ] && [ $p7 = ""а] ]
then
p7="${tab[$l+1]}"
elif [ $p7="" ]
then
p7="quelque soit port destination"
fin si non
fin si
done # cette done est pour le fin du boucle for
echo -e "\n### --sens$p1 --desision:$p2 --prot:$p3 --@ip_s:$p4 --@ip_d:$p5 --sport:$p6 --dport:$p7 ###" fin si # cette fin si est pour la condition avant le boucle for
done # cette done est pour la fin du 1ere boucle for
- premièrement je ne sait pas comment fermer l'instruction if et elif c'est a dir remplacer fin si non et fin si par le syntaxe necessaire.
- deuxièment je pentse que les faute son dans les lignes du condition if
==> j'espère que je trouve dans cette forum le réponce et merci d'avance
A voir également:
- Elif shell
- Classic shell - Télécharger - Personnalisation
- Secure shell - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Shell startup windows 10 - Guide
- Shell do while ✓ - Forum Shell
8 réponses
salut encore, et ce que je peut faire comme ça:
c'est a dir sans faire de else est ce que ça marche????
et merci
if <condition>
then
<traitement>
elif <condition>
then
<traitement>
elif <condition>
then
<traitement>
etc.
# pas de {else} ici
<traitement>
fi
c'est a dir sans faire de else est ce que ça marche????
et merci
Salut,
Je n'ai pas regardé ton script en détail, mais la syntaxe des "if...then" est normalement de la forme :
Je n'ai pas regardé ton script en détail, mais la syntaxe des "if...then" est normalement de la forme :
if <condition> then <traitement> elif <condition> then <traitement> elif <condition> then <traitement> etc. else <traitement> fi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé mon pote, mais ça marche pas je ne sait pas ou est le problème exactement???
voila le message en exécution aprés correction parfaite du if then elif fi
je tape mon commande dans le terminal
./tmed.sh
il affiche des erreurs:
??????
voila le message en exécution aprés correction parfaite du if then elif fi
je tape mon commande dans le terminal
./tmed.sh
il affiche des erreurs:
./tmed.sh: line 38: [: too many arguments ./tmed.sh: line 43: [: too many arguments ./tmed.sh: line 46: [: too many arguments ./tmed.sh: line 49: [: too many arguments ./tmed.sh: line 54: [: too many arguments ./tmed.sh: line 57: [: quelque: unary operator expected ./tmed.sh: line 62: [: too many arguments ./tmed.sh: line 65: [: quelque: unary operator expected ./tmed.sh: line 71: [: too many arguments ./tmed.sh: line 74: [: quelque: unary operator expected ./tmed.sh: line 80: [: too many arguments ./tmed.sh: line 83: [: quelque: unary operator expected ./tmed.sh: line 88: [: too many arguments ./tmed.sh: line 91: [: too many arguments ./tmed.sh: line 38: [: too many arguments ./tmed.sh: line 43: [: too many arguments ./tmed.sh: line 46: [: too many arguments
??????
A mon avis le problème est ailleurs et comme nous n'avons pas (encore) de don de voyance, difficile de voir d'où vient le problème ;-\
Par contre essaie ça :
Par contre essaie ça :
#! /bin/sh #set -xv echo "Entrez un nombre : " read nbre if [ "$nbre" = 1 ] then echo 1 elif [ "$nbre" = 2 ] then echo 2 elif [ "$nbre" = 3 ] then echo 3 fiet dis-moi si ça marche ou pas ? ;-))
mon pote le problème est exactement dans les lignes du conditions
c a dir
comme dans cette ligne:
et pour cette type de ligne
c a dir
comme dans cette ligne:
elif [ $p6 = "" ] il affiche comme erreur: ./tmed.sh: line 81: [: =: unary operator expected
et pour cette type de ligne
if [ [ ${tab[$l]} = "--dport" ] && [ $p7 = ""] ]
il affiche comme erreur:
./tmed.sh: line 86: [: too many arguments