A voir également:
- Scripting bash/php quote dans un sed
- Easy php - Télécharger - Divers Web & Internet
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
- Retour a la ligne php ✓ - Forum PHP
- Retour à la ligne bash ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 avril 2007 à 19:32
26 avril 2007 à 19:32
Salut,
Normalement il faut entourer l'expression "sed" par des "quotes doubles" et échapper la "quote simple" comme dans l'exemple suivant :
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';-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
26 avril 2007 à 20:41
26 avril 2007 à 20:41
J'avais omis le fait que ce soit une variable qu'il ne faut pas interpréter...
Donc il faut échapper aussi le "$" :
Donc il faut échapper aussi le "$" :
echo Bonjour | sed 's/Bonjour/'"'\$Bonsoir'"'/' '$Bonsoir';-))
Bonsoir,
Merci pour ton aide ;-)
J'ai transformé ma ligne de code:
Ce qui est assez bizarre c'est que si j'échappe $serial rien est assigné à ma variable dans ma seconde page, j'obtient:
Par contre j'obtiens bien ce que je veux quand je n'échappe pas ma variable mis à part un petit détail:
et je devrai normalement obtenir ceci (les noms d'os entre ""):
c'est assez bizarre que ces doubles quotes disparaissent d'une page à l'autre.
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.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
27 avril 2007 à 08:16
27 avril 2007 à 08:16
Essaie comme ça alors :
Bonsoir="Aurevoir" echo $Bonsoir Aurevoir echo Bonjour | sed 's/Bonjour/'"\"$Bonsoir\""'/' "Aurevoir";-)
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:
Ce tableau j'aimerai le trouver sous cette forme la dans ma deuxième page:
Mais avec la commande
J'obtiens la variable tab sous cette forme:
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.
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.