Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2011, 12h26   #1
Membre à l'essai
 
Homme AlaEddine OUALI
T24 Admin
Inscription : avril 2007
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme AlaEddine OUALI
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : T24 Admin
Secteur : Finance

Informations forums :
Inscription : avril 2007
Messages : 64
Points : 22
Points : 22
Envoyer un message via MSN à Grizli Envoyer un message via Yahoo à Grizli Envoyer un message via Skype™ à Grizli
Par défaut Condition if avec des fonctions

Bonjour,

je voudrai faire un contrôle d'un été de variable pour faire un traitement, le contrôle se fait par des fonctions unitaire que chaque une contrôle un paramètre et renvois la valeur 0 ou 1.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
((PARAM_TRUE=0x01))
((PARAM_FALSE=0x00))
.....
.....
.....
 
function getStatus()
{
    statusLink=$1
    if [ $statusLink == up ] || [ $statusLink == UP ]
    then
        return $PARAM_TRUE;
    fi    
    if     [ $statusLink == "DOWN" ] || [ $statusLink == "down" ]
    then
        return $PARAM_FALSE;
    fi
    return $TFB_PARAM_FALSE;
}
 
.....
.....
.....
 
 
if [ $(getStatus $status) == $PARAM_TRUE ] && [....]
 then 
traitement
else
autre traitement
fi

le message qu j'ai lors de l’exécution est le suivant

Code :
1
2
 
./gwProcessing.sh: line 47: [: too many arguments :aie:
la ligne 47 est bien la ligne du IF

Merci de votre aide

Oulai.A
Grizli est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/12/2011, 13h12   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

utilise systématiquement des guillemets autour des variables !
et autour des substitutions de commandes, s'il ne s'agit pas d'une assignation.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/12/2011, 13h31   #3
Membre à l'essai
 
Homme AlaEddine OUALI
T24 Admin
Inscription : avril 2007
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme AlaEddine OUALI
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : T24 Admin
Secteur : Finance

Informations forums :
Inscription : avril 2007
Messages : 64
Points : 22
Points : 22
Envoyer un message via MSN à Grizli Envoyer un message via Yahoo à Grizli Envoyer un message via Skype™ à Grizli
Bonjour,

Merci pour la réponse.

j'ai changé par

Code :
1
2
3
4
5
6
7
 
if [ $(getStatus "$status") == $PARAM_TRUE ] && [....]
 then 
traitement
else
autre traitement
fi
le message en sortie a changé pour
Code :
1
2
 
./gwProcessing.sh: line 47: [: ==: unary operator expected


Ouali.A
Grizli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/12/2011, 14h03   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
regarde ici !!!
if [ "$(getStatus "$status")" = "$PARAM_TRUE" ][…]
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/12/2011, 14h09   #5
Membre à l'essai
 
Homme AlaEddine OUALI
T24 Admin
Inscription : avril 2007
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme AlaEddine OUALI
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : T24 Admin
Secteur : Finance

Informations forums :
Inscription : avril 2007
Messages : 64
Points : 22
Points : 22
Envoyer un message via MSN à Grizli Envoyer un message via Yahoo à Grizli Envoyer un message via Skype™ à Grizli
Bonjour,

merci bien, pour la réponse effectivement, ça marche.

pour le lien que vous m'aviez transmis !!! il pointe vers la meme page !!! c'est voulue ou c'est une erreur.

Ouali.A
Grizli est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/12/2011, 14h13   #6
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
oui, c'est voulu, il renvoie à mon message précédent
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/12/2011, 14h22   #7
Membre à l'essai
 
Homme AlaEddine OUALI
T24 Admin
Inscription : avril 2007
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme AlaEddine OUALI
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : T24 Admin
Secteur : Finance

Informations forums :
Inscription : avril 2007
Messages : 64
Points : 22
Points : 22
Envoyer un message via MSN à Grizli Envoyer un message via Yahoo à Grizli Envoyer un message via Skype™ à Grizli
Par défaut autre impasse

Bonjour,

c'est encore pour la manipulation des valeur de retour pour des fonction écrites dans un autre script shell intégrer par source

ex:

shell1.sh
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function getStatus()
{
   local statusLink=${FLOW_STATUS_ARRAY[$1]};
   if [ $statusLink == "up" ]
    then
        return $PARAM_TRUE;
    fi    
 
    if [ $statusLink == "down" ]
    then
        return $PARAM_FALSE;
    fi
    return $TFB_PARAM_FALSE;
}
puis dans le shell2.sh

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
source shell1.sh
 
...
...
...
 
 
for (( i=0; i < ${#FLOW_ARRAY[@]}; i++ ));
do 
 
var=$(getStatus $i)
echo " var : " $var #ca ne donne rien var est vide merci de m'indiquer comment faire
 
....
....
 
if [ "$(getStatus "$i")" = PARAM_TRUE ] # la condition n'est pas vérifier or qu'lle aurai du l'etre
    then
        echo "OK"
    fi
done
Merci.

Ouali.A
Grizli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/12/2011, 16h12   #8
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
return n'affiche jamais rien.
Pour que var vaille $PARAM_{TRUE,FALSE}, il faut que le script affiche le code de retour renvoyé par return, en utilisant echo $?.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h49.


 
 
 
 
Partenaires

Hébergement Web