rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Scripting bash/php quote dans un sed

Vinz, le jeudi 26 avril 2007 à 19:19:27
Bonjour,
J'avais une petite question concernant un sed dans un exec.
J'ai la ligne suivante :

exec("sed -e 's/\$NbrMachines=7/$NbrMachines=$Machines/g' -e 's/\$ii=array(0=>\"x\")/$tab=\'$serial\'/g' /var/www/testlocal.php > $path/local$i.php");


Je n'arrive pas à mettre des simples quote autour de la variable $serial, comment dois-je faire pour "banaliser ces simples quote".
Merci pour votre aide :)
Configuration: Linux Debian
Mozilla 1.8.1.3
Répondre à Vinz  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 26 avril 2007 à 19:32:15
Salut,

Normalement il faut entourer l'expression "sed" par des "quotes doubles" et échapper la "quote simple" comme dans l'exemple suivant :
$ echo Bonjour | sed "s/Bonjour/\\'Bonsoir\\'/"
'Bonsoir'
Mais dans ton cas essaie plutôt ça :
$ echo Bonjour | sed 's/Bonjour/'"'Bonsoir'"'/'
'Bonsoir'
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 26 avril 2007 à 20:41:41
J'avais omis le fait que ce soit une variable qu'il ne faut pas interpréter...
Donc il faut échapper aussi le "$" :
echo Bonjour | sed 's/Bonjour/'"'\$Bonsoir'"'/'
'$Bonsoir'
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Vinz, le vendredi 27 avril 2007 à 00:14:43
Bonsoir,
Merci pour ton aide ;-)
J'ai transformé ma ligne de code:

exec("sed -e 's/\$NbrMachines=7/\$NbrMachines=$Machines/g' -e 's/\$ii=array(0=>\"x\")/\$tab='\"'$serial'\"'/g' /var/www/testlocal.php > $path/local$i.php");


Ce qui est assez bizarre c'est que si j'échappe $serial rien est assigné à ma variable dans ma seconde page, j'obtient:

$tab=' ';


Par contre j'obtiens bien ce que je veux quand je n'échappe pas ma variable mis à part un petit détail:

$tab='a:3:{i:0;s:4:centos;i:1;s:2:xp;i:2;s:6:debian;}';


et je devrai normalement obtenir ceci (les noms d'os entre ""):

$tab='a:3:{i:0;s:4:"centos";i:1;s:2:"xp";i:2;s:6:"debian";}';


c'est assez bizarre que ces doubles quotes disparaissent d'une page à l'autre.
Répondre à Vinz

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le vendredi 27 avril 2007 à 08:16:57
Essaie comme ça alors :
Bonsoir="Aurevoir"
echo $Bonsoir
Aurevoir
echo Bonjour | sed 's/Bonjour/'"\"$Bonsoir\""'/'
"Aurevoir"
;-)
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 vinz, le vendredi 27 avril 2007 à 13:05:32
Je pense que le problème se situe plus au niveau du code php qu'au niveau du scripting bash. Je vais expliquer le problème un peu plus en détail.

Mon but est de faire passer un tableau d'une page à une autre, pour ce faire j'utilise serialize:
$serial=serialize($stack);

Ce tableau j'aimerai le trouver sous cette forme la dans ma deuxième page:

$tab='a:3:{i:0;s:6:"centos";i:1;s:2:"xp";i:2;s:6:"debian";}';


Mais avec la commande
exec("sed -e 's/\$ii=array(0=>\"x\")/\$tab='\"'$serial'\"'/g' /var/www/testlocal.php > $path/local$i.php");


J'obtiens la variable tab sous cette forme:

$tab='a:3:{i:0;s:6:centos;i:1;s:2:xp;i:2;s:6:debian;}';


Donc lors du passage d'une page à l'autre les doubles quotes entourant le nom des os disparaissent.
Il faut donc que je trouve la raison de la disparition de ces doubles quotes qui ne doivent pas entourer toute la variable mais seulement le nom des os.
Pour mon premier problème (entourer la variable de simples quotes) c'est résolu maintenant :) pour la 2ème partie je pense que je vais me tourner vers le forum php à moins que quelqu'un ait une idée pour cette disparition de doubles quotes.
Répondre à vinz
Logiciels pertinents trouvés dans les téléchargements
Télécharger All In One Video Script 1.0All In One Video Script - All In One Video Script est un script pour l'extension GreaseMonkey pour le navigateur Firefox permettant de détecter la...Catégorie: Vidéo
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Plus de logiciels gratuits sur « scripting bash/php quote dans un sed »