|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2004 Messages : 10 ![]() |
Bonjour,
je dois modifier un script shell et je suis complètement novice dans le domaine. Je m'arrache les cheveux sur quelque chose qui me semblait pourtant être d'une facilité déconcertante... cela montre mon niveau... Je veux simplement exécuter dans mon script shell une commande qui est positionnée dans une variable. Je précise que la commande est une commande "complexe" (enchainement de commandes avec pipe). Pour simplifier, prenons l'exemple suivante : Je pensais que la ligne "$TOTO" allait permettre d'exécuter ma commande "ls | cat" mais apparament non. Cela fonctionne pour des commandes non enchainées (sans pipe) mais pas pour des commandes enchainées. J'ai également essayé avec mais cela ne fonctionne pas non plus. Est-ce ce quelqu'un est en mesure de m'expliquer pourquoi cela ne fonctionne pas, et surtout, comment faire pour y parvenir... J'avais prévenu que ça n'était pas d'un haut niveau Merci par avance |
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
Bonjour,
c'est, ainsi que le montre la sortie de , comme si tu tapais :; or, les apostrophes protègent la commande pipe (|) d'être interpétée. le conseil commun, pour les commandes complexes, est d'utiliser une fonction : |
|
|
20
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2004 Messages : 10 ![]() |
Bonjour,
merci beaucoup pour ta réponse Effectivement, cela fonctionne comme cela... En revanche, cela va compliquer mon code. En gros, je gérais des appels à find avec des commandes complexes différentes. Code :
Code :
|
||||
|
|
20
|
|
|
#4 | ||
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 437 ![]() |
Salut,
Tu peux aussi faire d'une autre manière comme ça : Ou encore une autre : Code :
|
||
|
|
10
|
|
|
#5 | ||||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
Je ne vois pas ce que ça change :
Code :
Code :
|
||||
|
|
10
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Citation:
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
20
|
|
|
#7 | ||||
|
Membre Expert
![]() |
Autre solution si tes commandes sont similaires, alimenter une ou plusieurs variables dans le case qui sera(ont) utilisée(s) après coup pour comme argument de tes commandes :
Code :
Code :
Si cela se trouve, tu n'as peut-être même pas besoin d'un pipe ?! |
||||
|
|
01
|
|
|
#8 | |
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Veuillez pardonner mon ignorance, mais :
Citation:
Ce qui semble très bien marcher chez moi ?
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
|
|
|
10
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2004 Messages : 10 ![]() |
Ouah, je ne pensais pas avoir autant de réponses, merci à tous
Je n'ai pas donné trop de détails car je ne souhaitais pas que des gens perdent trop de temps à effectuer mon travail Je voulais donc une petite aide sur quelque chose qui me semblait basique, ce que j'ai largement obtenu, et après, c'est à moi de m'y coller quand même. La solution proposée par FRUiT semble fonctionner (je ne l'ai pas encore testée dans mon script mais sur des petits tests à côté). Y-a-t-il une raison pour que les autres membres n'aient pas proposé cette solution ? Est-ce que vous n'y aviez pas pensé ou est-ce volontaire parce qu'il faut éviter d'utiliser eval (je ne sais pour quelle raison). Du coup, je passe le problème à résolu même si FRUiT et moi attendons de savoir si l'utilisation de eval est correcte. J'espère que c'est la bonne procédure. En tout cas, encore un grand merci à tous ! |
|
|
10
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
en l'occurrence, je ne l'ai pas proposé, parce que je ne vois pas de bonne raison de réactiver un comportement qui a été inhibé.
l'utilisation d'une fonction est beaucoup plus simple |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Rendons à César etc... En fait ce serait plutôt la solution qu'a proposé Luc1an0. Comme je l'utilise aussi dans un de mes scripts qui extrait des commandes dans des fichiers (et donx, comportant éventuellement des pipes), je me demandais ce qu'elle avait de non orthodoxe.
Après pour la question de réactiver un comportement inhibé, c'est pas faux encore que, je ne sais pas quelles raisons poussent le shell à inhiber le comportement du pipe... On peut aussi se demander en quoi c'est dangereux ou mal en dehors du fait que c'est algorithmiquement amoral/paradoxal. En tout cas merci N_BaH pour l'explication.
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
|
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() |
Citation:
Sinon, outre l'explication de N_BaH, l'utilisation d'eval est parfois déconseillée à cause des problèmes potentiels de sécurité que cela peut potentiellement poser. Enfin, il y a également la possibilité d'utiliser 2 variables distinctes : Code :
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com