gpt4 book ai didi

php - 将 linux shell 脚本命令转换为 php

转载 作者:搜寻专家 更新时间:2023-10-31 20:36:52 24 4
gpt4 key购买 nike

我面临的问题可能有一个简单的解决方案,但由于我不是 php 专家,所以我找不到它。当我必须从 php 调用 shell 命令时,我通常会这样做:

cmd = "convert file.pdf image.jpg";
shell_exec($cmd);

但是现在我有一个在 shell 上运行的命令,我不能让它从 php 运行,所以我认为可能有一种方法可以用 php 语言来表达相同的命令,

命令:

for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract '$imgdir/$imgdir-$i.ppm' '$imgdir-$i' -l eng; done

我的 php 尝试:

<?php
$imgdir = "1987_3";
$nf = count(new GlobIterator('filesup/'.$imgdir.'/*'));
$cmd = "for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract '$imgdir/$imgdir-$i.ppm' '$imgdir-$i' -l eng; done"
shell_exec($cmd);
?>

我得到的是:

PHP Notice:  Undefined variable: i in count.php on line 7

非常欢迎提出建议...谢谢

更新

我已经从我被标记为可能重复的那个问题中阅读了这个问题,我从中了解到我的“我”必须有一个引用,对于 shell 命令,它有,但确实如此从 php 执行时不起作用。

关于这一点,我也试过这个不成功:

<?php
$imgdir = "1987_3";
$nf = count(new GlobIterator('filesup/'.$imgdir.'/*'));
$cmd ="seq --format=%3.f 0 $nf";
$i = shell_exec($cmd);
$cmd = "tesseract 'filesup/$imgdir/$imgdir-$i.jpg' 'filesup/$imgdir/$imgdir-$i' -l eng; done";
shell_exec($cmd);
?>

最佳答案

PHP 将评估带双引号的字符串内的所有变量,示例:

<?php
$i=5;
echo "Your i is: $i";
?>

输出:你的 i 是:5

如果您想避免这种行为,请使用简单的引号:

<?php
$i=5;
echo 'Your i is: $i';
?>

输出:你的i是:$i

像这样更新你的代码:

<?php
$imgdir = "1987_3";
$nf = count(new GlobIterator('filesup/'.$imgdir.'/*'));
$cmd = 'for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract \'' . $imgdir/$imgdir . '-$i.ppm\' \'' . $imgdir . '-$i\' -l eng; done';
shell_exec($cmd);
?>

关于php - 将 linux shell 脚本命令转换为 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989859/

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