2012-07-05 96 views
0

如果我在命令行中运行这个命令(在我的Mac OS X):一个奇怪的,但可能是简单的,了shell_exec问题

echo -n "hello" > foo-cmd.txt 

我得到预期的结果,即包含文件foo-cmd.txthello”最后没有任何换行符。

但是,如果我运行此PHP代码:

<?php 
shell_exec("echo -n \"hello\" > foo-php.txt"); 
?> 

我得到一个文件foo-php.txt包含文本“-n hello”跟着一个新行!换句话说,参数-n作为输出潜入,而不是被视为参数!

我该如何解决这个问题?

回答

1

你的命令使用shell的内置版本的echo不支持-n选项。

尝试/bin/echo

+0

你如何弄清楚(从系统到系统,还是从一个PHP版本到另一个版本)shell_exec是否正在使用它自己的特定命令的内置版本? – Enchilada 2012-07-05 11:14:47

+0

@Enchilada它不是'shell_exec',它有问题 - shell_exec调用的系统shell具有内置插件。简单的答案是,不要使用'shell_exec'来执行几行PHP代码。 – Alnitak 2012-07-05 11:16:23

0

试试这个:

shell_exec("echo\ -n \"hello\" > foo-php.txt"); 
+0

然后我得到“sh:echo -n:command not found”。 – Enchilada 2012-07-05 10:54:05