Il peut être utile si vous êtes sur un Mac et utilisez TextMate, mais pas entièrement nécessaire.Comportement Bizarre script shell php
Ma position php:
$which php
/opt/local/bin/php
Le script:
#!/opt/local/bin/php
<?php
shell_exec("echo -n 'my-string' > out.txt");
?>
Le -n pour supprimer l'écho de la nouvelle ligne qui est automatiquement ajouté à toutes les commandes d'écho shell.
Si je lance le code php ci-dessus de la coquille:
chmod u+x myfile.php
./myfile.php
je me retrouve avec 'out.txt', dont le contenu étant:
-n my-string
Si je lance exactement même code dans TextMate, le contenu de « out.txt » sera correcte:
my-string
Je ne peux pas les chiffres sur ce que PHP est à l'esprit h en mettant la chaîne littérale '-n' dans la sortie. Je me demande vraiment pourquoi TextMate fait la bonne chose. J'ai vérifié que les deux utilisent le même php, php -i montre la plupart du temps les mêmes choses, bien sûr il y a des différences quand on exécute TextMate, l'autre dans le shell, donc une sortie a des pointeurs vers le fichier alors que l'autre 't. Autant que je sache, $ PATH et $ ENV sont les mêmes.
J'ai essayé une poignée de méthodes différentes pour contourner ce problème. En fait, je ne serai pas en mesure d'utiliser une solution de contournement, car cela a été ramené à un cas simple pour l'envoi à SO. Mon cas d'utilisation de cette pipe à pbcopy, que je croyais être une fonctionnalité de Mac OS X seulement, j'ai donc utilisé >> redirection ici parce que c'est universel.
Finalement, je veux un résultat sur mon presse-papiers qui n'a pas de saut de ligne, ce qui est dangereux car coller dans un shell va exécuter tout ce qui l'a précédé.
Merci
Je ne peux pas reproduire: $ php -r "shell_exec (\" echo -n 'my-string'> out.txt \ ");" glopes @ nebm: ~ $ cat out.txt my-string – Artefacto
Pourquoi ne pas utiliser les guirlandes? – EricR