gpt4 book ai didi

php - Shell_exec 使用相同的输入给出不同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:54 27 4
gpt4 key购买 nike

我正在尝试返回 Linux 环境中文件夹的内容。为此,我运行以下代码:

//this line returns folders and files from current folder
$reg = shell_exec ("ls -A");
//in this line I just try to show the info with the desired structure.
$reg = "stat --printf='%n|%s|%s|%F|%y|%a' ".$reg." | numfmt --to=iec-i --field=2 --delimiter='|' --suffix=B";
//This prints the content of $reg
echo $reg;
//I manually input the string returned by $reg and I receive the correct output
echo shell_exec ("stat --printf='%n|%s|%s|%F|%y|%a' .file1 file2 | numfmt --to=iec-i --field=2 --delimiter='|' --suffix=B");
//This just prints the result of "stat --printf='%n|%s|%s|%F|%y|%a' .file1"
echo shell_exec ($reg);

问题是最后两个“echo”指令在给定(理论上)相同输入的情况下返回不同的输出。

我该如何解决这个问题?

最佳答案

ls 检测到它正在被管道传输到另一个命令时,它会每行写入一个文件,从而搞砸你的命令。

你可以用空格替换它们

$reg= str_replace("\n", " ", shell_exec("ls -A"));

或使用 ls 作为替代

$reg = "stat --printf='%n|%s|%s|%F|%y|%a' $(ls -A) | numfmt --to=iec-i --field=2 --delimiter='|' --suffix=B";

关于php - Shell_exec 使用相同的输入给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49340210/

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