gpt4 book ai didi

php - shell_exec 语法错误。直接在终端运行就可以了

转载 作者:行者123 更新时间:2023-12-04 03:02:46 26 4
gpt4 key购买 nike

有这个命令:

    $command = "diff -bBdH --ignore-all-space <(echo 'hi') <(echo 'hi1')";
echo $command;
$result = shell_exec($command);

在屏幕上我看到:

    sh: 1: Syntax error: "(" unexpected
diff -bBdH --ignore-all-space <(echo 'hi') <(echo 'hi1')

如果我将控制台输出的第二行复制粘贴到终端,结果将是正确的。 (也在另一台机器上转载)。

我在这里遗漏了一些非常简单的东西,看不到它是什么。


另外,为什么我的输出是反的?
我在执行命令之前清楚地回应了命令,因此shell的语法错误应该出现在shell_exec

之后

最佳答案

您的语法对 Bash 没问题,但对 sh 无效。在 Bash 中显式运行它,或将 Bashisms 转换为经典的 Bourne shell(有点挑战性,可能需要一个临时文件)。

我不知道 PHP 是否提供了一种方法来指定在 shell_exec 中使用哪个 shell,但您至少可以让 sh 运行 bash 给你。不过,嵌套引用有点棘手。

shell_exec("bash -c 'diff -bBdH --ignore-all-space <(echo \"hi\") <(echo \"hi1\")'");

标准输出和标准错误之间的输出顺序是任意的;输出缓冲可能导致在常规打印之前打印错误消息,尽管它们以不同的顺序执行。在单个流中,您当然可以依赖有序输出。

关于php - shell_exec 语法错误。直接在终端运行就可以了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com