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 01/03/2008, 13h00   #1
Invité régulier
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 5
Points : 5
Par défaut awk : protection d'une var issue d'un script sh

Bonjour tout le monde,
Une petite question pas chere : pourquoi ce truc ne marche pas ? Je n'arrive pas a extraire ma variable dans la ligne awk...

$TOTO="'{print \$2}'"
ps -ef | grep " $PROC " | awk $TOTO

Que je fasse un awk `echo $TOTO` ou un awk ${TOTO} : toujours meme punition...

Une idée ?
Fung999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2008, 18h14   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
normal le quotting des commandes awk n'est pas bon ou suffisant.

d'autre part c'est une mauvaise methode mais ca c'est rien....
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2008, 18h43   #3
Invité régulier
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 5
Points : 5
Citation:
Envoyé par frp31 Voir le message
normal le quotting des commandes awk n'est pas bon ou suffisant.

d'autre part c'est une mauvaise methode mais ca c'est rien....
Pourquoi la methode est-elle mauvaise ?
Dans ce script je dois, selon le resultat d'un uname -sr, afficher x ou y colonne.
Les variables sont initiees sur un switch case et appellées ensuite dans le awk selon la colonne desirée. Je n'ai pas d'autre idée à part mettre 50 switch case dans le script (ce que je trouve vraiment moyen).
Fung999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2008, 11h20   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
soit tu fait un awk soit tu fais un shell mais pas les deux ....

frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2008, 17h00   #5
Membre éprouvé
 
Homme
Ingénieur systèmes et réseaux
Inscription : août 2007
Messages : 508
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : août 2007
Messages : 508
Points : 464
Points : 464
Citation:
Envoyé par Fung999 Voir le message
$TOTO="'{print \$2}'"
ps -ef | grep " $PROC " | awk $TOTO

Que je fasse un awk `echo $TOTO` ou un awk ${TOTO} : toujours meme punition...
Le problème se situe au niveau du caractère $ dans $TOTO. Un programme awk est encapsulé le plus souvent entre simples quotes donc le $ risque de ne pas etre interprété. Pour que ca marche, il faut faire :
Code :
1
2
3
 
TOTO="{print \$2}" 
ps -ef | grep " $PROC " | awk '  ' "$TOTO" '  '
Sans oublier evidemment les simples quotes ' ' du awk.
Le " ", c'est pour protéger les espaces.
Je t'explique :
dans " $TOTO", le caractère $ sera interprété donc il sera remplacé par sa valeur et on le met entre quote ' ' pour protéger le résultat.

J'espère que je t'ai bien aidé ou sinon visite ce site pour plus d'explications :

http://www.faqs.org/faqs/unix-faq/fa...ection-12.html
publicStaticVoidMain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2008, 19h02   #6
Invité régulier
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 5
Points : 5
Citation:
Envoyé par publicStaticVoidMain Voir le message
J'espère que je t'ai bien aidé ou sinon visite ce site pour plus d'explications :
http://www.faqs.org/faqs/unix-faq/fa...ection-12.html
Super merci pour le lien et l'explication tres claire : tout compris )
Fung999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h00.


 
 
 
 
Partenaires

Hébergement Web