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 03/06/2011, 04h28   #1
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
Par défaut Comment extraire une partie d'un paramètre en entrée, et tester sa valeur ?

Bonjour,

J'utilise un programme shell qui est exécuté avec 10 paramètres en entrée.
Le 10ème paramètre est une liste de 12 valeurs séparées par des virgules et dont j'ai besoin de tester le contenu de la 11ème valeur.

Lorsque j'utilise la syntaxe suivante :
Code :
1
2
 
echo ${10} | cut -f11 -d','
le contenu de la 11ème valeur est affiché : OUI

Par contre, quand je tente d'utiliser cette syntaxe dans un if :
Code :
1
2
 
if [ ${10} | cut -f11 -d',' = 'OUI' ]
ça plante : impossible d'exécuter =
impossible d'exécuter 'OUI'
impossible d'exécuter ]

Avez-vous une idée ?

Merci.
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 07h51   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
if [ "$(echo ${10} | cut -f11 -d',' )" = 'OUI' ]
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/06/2011, 08h42   #3
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

parce que le shell peut le faire :
Code :
1
2
3
4
maFunc() { if [ "$(IFS=','; set -- $3; echo "$5")" = "e" ]; then echo ok; else echo KO; fi; echo "$1";} 
maFunc foo bar a,b,c,d,e,f
ok
foo
ceci montre que l'on peut décomposer le troisième paramètre passé à la fonction sans altérer les autres, car $( ) crée un sous-shell qui n'interfère pas avec son parent.

en BASH, j'enverrais le contenu du paramètre dans un tableau.
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 18h25.


 
 
 
 
Partenaires

Hébergement Web