#1 Le 24/01/2008, à 12:16
- mc_cut_killer
[Script Shell] Problème pour exécuter des commandes
Bonjour à tous
Je suis confronté à deux types de problèmes, mon but est de créer un script qui soit capable de lire un fichier qui contient des commandes.
Voici la portion de code qui me pause problème :
1. # lecture du fichier input avec frequence
2. if [ "$PARAM" = "" ] ; then
3. cat $FICIN | grep ^$1 | while read ligne
4. do
5. # syntaxe = freq:nom:commande
6. CDE=`echo $ligne | awk 'BEGIN { FS=":" } { print $3 }'`
7. $CDE
8. done
Si je fais un echo $CDE -> top -d 5 -n 3 | grep Xorg >> tmpXorg
Ca me revoie donc bien la bonne commande, par contre impossible de l'exécuter avec les pipes ! Alors qu'un copier / coller fonctionne :pt1cable:
J'ai donc tenté une autre approche (pas très propre certes) :
Code :
1. if [ "$PARAM" = "" ] ; then
2. cat $FICIN | grep ^$1 | while read ligne
3. do
4. # syntaxe = freq:nom:commande
5. echo $ligne | awk 'BEGIN { FS=":" } { print $3 }' > .todo
6. chmod +x .todo && ./.todo
7. done
Cette fois la commande me revoie : top: failed tty get
Par contre si je lance le fichier .todo dans un shell ca marche, et si je créé un autre fichier qui le lance ca marche aussi.
J'aurais aimez savoir si quelqu'un à déjà été confronté à ce genre de problème, il est clair que la première solution à l'air mieux mais je peut aussi utiliser la seconde ou même une autre ...
#2 Le 24/01/2008, à 12:36
- toufalk
Re : [Script Shell] Problème pour exécuter des commandes
T'as essayé ça ??
7. eval $CDE
Hors ligne
#3 Le 24/01/2008, à 12:55
- mc_cut_killer
Re : [Script Shell] Problème pour exécuter des commandes
Oui c'est ce que je fais maintenant
Par contre je me retrouve avec la même erreur que pour le deuxième cas :
top: failed tty get
#4 Le 24/01/2008, à 13:10
- mc_cut_killer
Re : [Script Shell] Problème pour exécuter des commandes
C'est bon résolu
Merci à Elmoricq, pour ceux que ca intéresse il faut ajouter le paramètre -b au top ...
#5 Le 24/01/2008, à 13:21
- tuxce
Re : [Script Shell] Problème pour exécuter des commandes
pour le fichier todo, c'est parce que top a besoin d'un terminal (ou en tout cas, qu'il pense qu'il y a un terminal) pour se lancer
pour ce qui est d'eval, il suffit d'entourer la variable avec ":
eval "$CDE"
Hors ligne