Probleme entre quote et backquote
clara
-
pypik -
pypik -
Bonjour,
Voici mon probleme, j'ai besoin de lancer une commande qui utilise des guillements en option. je lance cette commande entre backquote.
L'inconvénient est que automatiquement est rajouté un simple quote ce qui n'execute pas la commande.
La ligne s'affiche comme cela :
J'ai bien essayé un tr -d \' mais ça ne fonctionne pas.
Merci de votre aide.
Voici mon probleme, j'ai besoin de lancer une commande qui utilise des guillements en option. je lance cette commande entre backquote.
L'inconvénient est que automatiquement est rajouté un simple quote ce qui n'execute pas la commande.
`cat file.conf | grep -w PATTERN | awk '{ print "commande.exe","\""$1"\"",$2,$9".txt","1","1","20"}'`
La ligne s'affiche comme cela :
commande.exe '"coucou;moi"' PATTERN PATTERN.txt 1 1 20
J'ai bien essayé un tr -d \' mais ça ne fonctionne pas.
Merci de votre aide.
A voir également:
- Probleme entre quote et backquote
- Whatsapp quote - Guide
- Différence entre core "i" et quad core ? - Forum Matériel & Système
- L'heure "am/pm" entre 0h00 et 1h00 ✓ - Forum Windows
- Problème "pnkbstra.exe" ✓ - Forum Réseau
- Problème outils "correcteur" et "pièce" avec photoshop CC - Forum Photoshop
10 réponses
nope :(
Le $1 n'est pas pris en compte.
Le $1 n'est pas pris en compte.
+++ awk '{ print "commande.exe","\"$1\"",$2,$9".txt","1","1","20"}'
++ TEST=commande.exe "$1" PATTERN PATTERN.txt 1 1 20
++ echo commande.exe '"$1"' PATTERN PATTERN.txt 1 1 20
Essaie comme ça alors :
awk '{ printf "%s \"%s\" %s %s %s %s %s\n", "commande.exe",$1,$2,$9".txt","1","1","20" }';-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Toujours pas... :(
En fait ce sont bien les backquotes qui posent probleme, pas vraiment le awk.
La awk me recupere bien la ligne de commande avec les options qui vont bien.
pour executer cette ligne de commande, je place des backquotes. Ces backquotes viennet ajouter des simples quotes entre les guillements qui foutent le m....
En fait ce sont bien les backquotes qui posent probleme, pas vraiment le awk.
La awk me recupere bien la ligne de commande avec les options qui vont bien.
pour executer cette ligne de commande, je place des backquotes. Ces backquotes viennet ajouter des simples quotes entre les guillements qui foutent le m....
C'est bizarre ça que ça marche pas, chez moi sur un fichier comme "/etc/passwd" c'est nickel ;-\
Pourquoi encadres-tu la commande par des backquotes ??? Enlèves-les malheureuse ;-))
J'avais pas fait attention, je croyais que tu voulais récupérer le résultat dans une variable ;-(((
Pourquoi encadres-tu la commande par des backquotes ??? Enlèves-les malheureuse ;-))
J'avais pas fait attention, je croyais que tu voulais récupérer le résultat dans une variable ;-(((
Merci de ta patience.
en fait j'utilise les backquote car je souhaite que l'ensemble de la chaine qui est renvoyé par le awk soit executée.
Si je ne met pas les backquote, cette chaine est juste affichée.
en fait j'utilise les backquote car je souhaite que l'ensemble de la chaine qui est renvoyé par le awk soit executée.
Si je ne met pas les backquote, cette chaine est juste affichée.
Tu peux développer s'il te plaît... je suis pas sûr de tout comprendre là ;-\
Si tu veux que chaque ligne retournée soit exécutée, il faut passer par une boucle alors...
Si tu veux que chaque ligne retournée soit exécutée, il faut passer par une boucle alors...
Ok on reprend depuis le debut :)
Directement depuis le prompt, je peux lancer la commande suivante qui fonctionne :
Je souhaite scripter l'execution de cette commande.
Lorsque le script est de la forme (sans backquote) :
Ma commande est juste affichée.
Lorsque le script est :
La commande est jouée (ce que je souhaite) mais la syntaxe n'est pas bonne à cause de ces quotes qui viennent entourer les guillemets.
Directement depuis le prompt, je peux lancer la commande suivante qui fonctionne :
# commande.exe "coucou;moi" PATTERN PATTERN.txt 1 1 20
Je souhaite scripter l'execution de cette commande.
Lorsque le script est de la forme (sans backquote) :
#!/bin/sh
set -x
cat file.conf | grep -w $1 | awk '{ print "commande.exe","\""$1"\"",$2,$9".txt","1","1","20"}'
Le résultat est :
./script.sh PATTERN
++ cat file.conf
++ grep -w PATTERN
++ awk '{ print "commande.exe","\""$1"\"",$2,$9".txt","1","1","20"}'
commande.exe "coucou;cmoi" boubou PATTERN.sce 1 1 20
Ma commande est juste affichée.
Lorsque le script est :
#!/bin/sh
set -x
`cat file.conf | grep -w PATTERN | awk '{ print "commande.exe","\""$1"\"",$2,$9".txt","1","1","20"}'`
Le resultat est :
./script.sh PATTERN
++ cat file.conf
++ grep -w PATTERN
++ awk '{ print "commande.exe","\""$1"\"",$2,$9".txt","1","1","20"}'
++ commande.exe '"coucou;cmoi"' boubou PATTERN.sce 1 1 20
Test du 12/02/2008 a 15:37:43
Test du 12/02/2008 a 15:37:43
La commande ne fonctionne pas
La commande est jouée (ce que je souhaite) mais la syntaxe n'est pas bonne à cause de ces quotes qui viennent entourer les guillemets.
Pour insérer un simple quote ' tu peux definir une variable "quote" qui contient le ' en question sur la ligne de commande shell : quote = " ' " (j'ai mis des espaces pour bien voir) puis utiliser cette variable dans la ligne de commande avec l'option -v de awk.
Exemple :
quote="'" ; echo "un deux" | awk -v quote=$quote '{print quote $1 quote}'
cela affichera : 'un'
Un autre exemple sur le même principe avec double quote où dblequote = " \ " " (j'aimis des espaces pour expliquer) :
dblequote="\"" ; echo "un deux" | awk -v dblequote=$dblequote '{print dblequote $1 dblequote}'
cela affichera : "un"
Exemple :
quote="'" ; echo "un deux" | awk -v quote=$quote '{print quote $1 quote}'
cela affichera : 'un'
Un autre exemple sur le même principe avec double quote où dblequote = " \ " " (j'aimis des espaces pour expliquer) :
dblequote="\"" ; echo "un deux" | awk -v dblequote=$dblequote '{print dblequote $1 dblequote}'
cela affichera : "un"