执行shell脚本代码取决于PHP返回值


execute shell script code depends upon php return value

我没有那么多的PHP知识,我需要运行一个依赖于PHP返回值的脚本。

脚本

presentDir=`pwd`
success=$(php -f $presentDir/optimize.php $file)
echo echo "value:".$success
PHP代码

<?php
try{        
    //code  
} catch(Exception $e){
    return 1
}
return 0

执行以上shell脚本时,success为空

PHP的return语句不发送任何输出到STDOUT,这是您将与$()结构捕获的。要查看命令的退出值,可以使用PHP中的exit语句和shell的$?变量。也许这就是你要找的?

<?php
try {
    //code
} catch(Exception $e){
    exit(1);
}
exit(0);
?>

紧随其后:

#!/bin/sh
php -f optimize.php "$file"
printf "PHP script returned %d" $?
# or you could just use if:
if php -f optimize.php "$file"; then
    do_stuff
fi

不需要在脚本调用中包含当前工作目录。(更进一步,您可以使脚本可执行并直接调用它!)