Rechercher : dans
Par :

Script shell \ if else elif fin sinon fin si

Dernière réponse le 26 mai 2009 à 23:05:19 tmedtcom, le 26 mai 2009 à 19:37:21 
 Signaler ce message aux modérateurs

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

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
Configuration: Windows Vista
Firefox 3.0.10

Meilleures réponses pour « script shell \ if else elif fin sinon fin si » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...
VBScript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...

1

jipicy, le 26 mai 2009 à 20:14:38
  • +1

Salut,

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
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

tmedtcom, le 26 mai 2009 à 20:23:11

OK merci beaucoup, tu est vraiment génial!!!

Répondre à tmedtcom

3

tmedtcom, le 26 mai 2009 à 22:23:31

Salut encore, et ce que je peut faire comme ça:

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

Répondre à tmedtcom

4

jipicy, le 26 mai 2009 à 22:28:07
  • +1

Oui ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

5

tmedtcom, le 26 mai 2009 à 22:37:29

merci encore et encore

Répondre à tmedtcom

6

tmedtcom, le 26 mai 2009 à 22:49:41

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:

./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

??????

Répondre à tmedtcom

7

jipicy, le 26 mai 2009 à 22:54:15

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 :

#! /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
fi
et dis-moi si ça marche ou pas ? ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

8

 tmedtcom, le 26 mai 2009 à 23:05:19

Mon pote le problème est exactement dans les lignes du conditions
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

Répondre à tmedtcom
Collection CommentÇaMarche.net