Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1491 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] [KSH] Executer plusieurs commandes dans une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] [KSH] Executer plusieurs commandes dans une variable

n°2141212
ChOoN
Posté le 07-05-2012 à 16:10:48  profilanswer
 

Bonjour,
 
Pour les besoins d'un script kornshell (ksh), je dois exécuter plusieurs commandes séparées par un point-virgule (;) contenues dans une variable TRAITEMENT.
Le problème est que les différentes commandes sont éxecutées comme si elles formaient seulement 1 commande.
 
Un exemple sera plus clair :
 
Lorsque je tape directement les commandes séparées par un point-virgule :

Code :
  1. echo 1;echo 2
  2. > 1
  3. > 2


 
Maintenant lorsque je passe le traitement dans une variable. Le echo m'affiche bien exactement ce que j'ai au dessus, pourtant à l'execution je n'ai pas le même comportement :

Code :
  1. TRAITEMENT=echo 1;echo 2
  2. echo $TRAITEMENT
  3. > echo 1;echo 2
  4. $TRAITEMENT
  5. > 1;echo 2


 
Comment puis-je faire pour executer ces 2 commandes dans ma variable ?
 
Par avance merci pour votre aide.


Message édité par ChOoN le 10-05-2012 à 18:04:51
mood
Publicité
Posté le 07-05-2012 à 16:10:48  profilanswer
 

n°2141577
Profil sup​primé
Posté le 09-05-2012 à 15:53:10  answer
 

salut,
 
ce procédé n'est pas recommandé.
utilise plutôt une fonction.

n°2141590
olivthill
Posté le 09-05-2012 à 16:25:55  profilanswer
 

Il faudrait utiliser \c pour empêcher le retour à la ligne (si c'est ça le problème). Par exemple :
 

echo "1 \c"; echo "2 \c";


n°2141634
ChOoN
Posté le 09-05-2012 à 17:55:53  profilanswer
 


 
En fait c'est pour la simplicité de la conf.
Dans le fichier de conf il y a une partie déclencheur, puis l'autre partie execution de commande.
 
Par exemple je surveille dans le repertoire /tmp l'arrivée du fichier foo.bar, et lorsqu'il arrive je le copie dans un autre repertoire puis je lance un traitement.
 
Ce qui donnera :
 

Code :
  1. /tmp/foo.bar,cp % /autreRepertoire;/foo/bar/traitement %


 


---------------
Trop d'argent ? comment se ruiner . com
n°2141821
Nukolau
Posté le 10-05-2012 à 16:23:30  profilanswer
 

Il faut utiliser eval :

Code :
  1. > T='echo 1 ; echo 2'
  2. > $T
  3. 1 ; echo 2
  4. > eval $T
  5. 1
  6. 2

n°2141851
ChOoN
Posté le 10-05-2012 à 18:04:10  profilanswer
 

Nukolau a écrit :

Il faut utiliser eval :

Code :
  1. > T='echo 1 ; echo 2'
  2. > $T
  3. 1 ; echo 2
  4. > eval $T
  5. 1
  6. 2



 
 
Parfait ! Ca marche niquel. Merci !


---------------
Trop d'argent ? comment se ruiner . com
n°2141892
Profil sup​primé
Posté le 11-05-2012 à 05:20:20  answer
 

Il ne faut pas utiliser eval.
On peut le faire, mais c'est dangereux.
(les solutions faciles ne sont souvent pas les plus sûres : tu prends le raccourci qui passe dans le bois, mais il y a un loup !)
 
utilise une fonction.

n°2141903
Nukolau
Posté le 11-05-2012 à 09:31:49  profilanswer
 

Je ne comprends pas pourquoi tu dis qu'il ne faut pas utiliser eval ? pour quelle raison ?
J'ai déjà écrit un paquet de script avec sans avoir eu de problèmes (très pratique par exemple pour log la commande exacte que tu vas exécuter).

n°2141906
Profil sup​primé
Posté le 11-05-2012 à 09:52:59  answer
 

c'est expliqué ici au #14
et avec plus de détail


Message édité par Profil supprimé le 11-05-2012 à 09:53:37
n°2141982
Nukolau
Posté le 11-05-2012 à 14:30:28  profilanswer
 

Effectivement, je comprends ce que tu voulais dire par c'est dangereux.
 
Maintenant, à partir du moment où tu es sur de ce que tu fait (ie tu ne te bases pas sur des données accessibles à un tiers), ben pas de soucis.
 
Enfin tu as raison, le warning sur cette commande n'était pas de trop, même si dans le cas présent, si j'ai bien compris la demande initiale, le problème ne devrait pas avoir lieu.

mood
Publicité
Posté le 11-05-2012 à 14:30:28  profilanswer
 

n°2143530
ChOoN
Posté le 24-05-2012 à 11:31:11  profilanswer
 

En effet merci pour cette précision. Enfin dans mon cas je maîtrise ce qu'il y a dans les variables et du coup je vais éviter d'allonger le temps de développement.


---------------
Trop d'argent ? comment se ruiner . com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] [KSH] Executer plusieurs commandes dans une variable

 

Sujets relatifs
script pour s'authentifier sur un site et executer une actionResource id2 : utiliser ce résultat comme variable
[VB.NET] Instancier un formulaire plusieurs fois [Résolu][PERL] problème avec variable de session PHP
Exécuter plusieurs macros ExcelRécuperer plusieur $_POST dans une seul variable possible ??
[ORACLE] Fragmenter une journée sur plusieurs lignesOu déclarer une class qui va servir à plusieurs endroits ?
créer un tableau php avec tri et plusieurs tables... 
Plus de sujets relatifs à : [Résolu] [KSH] Executer plusieurs commandes dans une variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR