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 13/02/2006, 10h07   #1
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Par défaut Appeler une URL avec & depuis une ligne de commande

Bonjour,
Je dois parser une URL depuis un script perl de la façon suivante :


Citation:
./monscript.pl monargument
le truc c'est que mon argument est une URL, et contient des "&".
Malheureusement linux s'arrete au & en pensant que c'est a faire un tâche de fond. (je suppose), et donc ne traite pas mes variables...

Comment faire pour escaper les & ?
Je ne trouve rien null part

Je précise que j'appelle ce script depuis coldfusion, et que sans paramètres spéciaux dans mon lien, tout fonctionne.
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 10h16   #2
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
Met un \ avant le & ou met l'url entre deux " " , ca devrait marcher
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 10h27   #3
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
déjà tenté...
entre "" il s'arrete au & et le me en arriere plan
et si je fais \&,
il fait rien...

Code :
 ./html2text.pl "http://monsite.com/index.cfm?NewsletterId=282&txtver=1"
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 10h51   #4
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Bonjour,
Peux-tu nous donner la sortie complète du shell lorsque tu lance la command pour qu'on puiss e voir l'erreur exacte. Et aussi dis nous le type de ton shell 'echo $SHELL'
__________________
Reportage d'Arte sur Linux
narmataru est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h02   #5
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Code :
1
2
3
 
/bin/bash
Linux version 2.4.31
Le truc c'est qu'il ne maffiche pas d'erreur.
Soit il m'affiche mon résultat sans tenir compte du paramètre apres le &,

Code :
./html2text.pl "http://monsite.com/index.cfm?NewsletterId=282&txtver=1"
Soit il m'affiche rien si je mets le \&
Code :
./html2text.pl "http://monsite.com/index.cfm?NewsletterId=282\&txtver=1"
Mon appli est un simple parseur qui me renvoie une string épurée de l'html sur la sortie standard


Au pire je peux refaire mon lien sans le &,
mais ca m'embête, et surtout je sui curieu de savoir ou est le problème, car je pense que ce doit être tout con mais vu mon niveau en linux..
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h04   #6
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Affiche l'url reçcue dans ton script perl pour voir exactement si c'est le shell qui traite le '&' ou si c'est le script qui l'interprète mal.
__________________
Reportage d'Arte sur Linux
narmataru est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h08   #7
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Héhé, et comment je fais ca

Mon script ressemble à:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
 
use strict;
use Data::Dumper;
 
my $html;
my $url = $ARGV[0];
 
my %href;
 
my $tmpfile = "/tmp/.html2text.tmp";
my @text_data = `/usr/bin/lynx -force_html -dump $url`;
unlink($tmpfile);
 
[...]
JE fait passer mon URL par lynx pour épurer mon html et puis je finis avec mon parseur.
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h15   #8
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Tu rajouteun ''print '
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
 
use strict;
use Data::Dumper;
 
my $html;
my $url = $ARGV[0];
 
# ---- ICI
print "url demandée : '$url'";
# -----
 
my %href;
 
my $tmpfile = "/tmp/.html2text.tmp";
my @text_data = `/usr/bin/lynx -force_html -dump $url`;
unlink($tmpfile);
 
[...]
__________________
Reportage d'Arte sur Linux
narmataru est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h26   #9
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
print
bash: print: command not found
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h31   #10
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
C'est bizarre que tu as un erreur bash dans un script perl

Voic ice que j'ai chez moi :
Citation:
narma@linimi:/tmp$ cat toto.pl
#!/usr/bin/perl

use strict;
use Data:umper;

my $html;
my $url = $ARGV[0];

# ---- ICI
print "url demandée : '$url'\n";
# -----

narma@linimi:/tmp$ ./toto.pl "http://monsite.com/index.cfm?NewsletterId=282&txtver=1"
url demandée : 'http://monsite.com/index.cfm?NewsletterId=282&txtver=1'
__________________
Reportage d'Arte sur Linux
narmataru est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 11h53   #11
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Code :
1
2
3
[root@whitebird others]# ./html2text.pl "http://newslettermonsite.com/index.cfm?NewsletterId=282"
 
url: 'http://monsite.com/index.cfm?NewsletterId=282'
Il me perd le &
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 12h00   #12
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Citation:
Envoyé par Fritzoune
Code :
1
2
3
[root@whitebird others]# ./html2text.pl "http://newslettermonsite.com/index.cfm?NewsletterId=282"
 
url: 'http://monsite.com/index.cfm?NewsletterId=282'
Il me perd le &
ben non moi je ne le vois pas dans ta commande le '&' il ne perd rien du tout dans ce que tu nous montre
__________________
Reportage d'Arte sur Linux
narmataru est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 12h16   #13
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
je suis un boulet:

Code :
1
2
./html2text.pl "http://monsite.com/index.cfm?NewsletterId=282&txtver=1"
url: monsite.com/index.cfm?NewsletterId=282&txtver=1'
effectivement il me perd rien du tout...

Mais il maffiche quand meme des données qui ne sont pas la lorsque j'appelle mon URL par le web avec le "&txtVer=1"

je comprends plus rien :
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 12h34   #14
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Ah, je dirais que c'est a ce niveau la que ca case..
Code :
my @text_data = `/usr/bin/lynx -force_html -dump $url`;
Faut que j'arrive a mettre l'url entre doublequote pour que lynx le voie
Seulement si je fais:

Code :
./html2text.pl "\"http://monsite.com/index.cfm?NewsletterId=282&txtver=1\""
Il voit rien ..
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2006, 14h52   #15
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Bon ben je sais pas pourquoi ca marche pas si je mets ma var dans ma lgine de commande du script, alors que si j'appelle en direct ca le fait..
j'ai changé mes liens et contourné le problème.

Merci pour votre aide.
Fritzoune 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 19h07.


 
 
 
 
Partenaires

Hébergement Web