如下代码,执行时会直接将svn中的特定文件的最后一个日志输出出来,曾尝试ob_start()和ob_get_contents(),依然获取不到执行返回的值。请教各位如何将执行的结果输出到一个变量中?
$stream = expect_popen("svn log https://svn.intra.abc.com/index.php --limit 1 --username=$svnusr");$cases = array (
  array (0 => "Password for '$svnusr':", 1 => PASSWORD),
  array (0 => "yes/no)?", 1 => YESNO),
  array (0 => "(p)ermanently?", 1 =>ISACCEPT),
);while(true) {
switch(expect_expectl($stream, $cases, $match)) {
case ISACCEPT:
fwrite($stream, "t\n");
break; case PASSWORD:
fwrite ($stream, "$svnpwd\n");
break; case YESNO:
fwrite ($stream, "yes\n");
break; case EXP_TIMEOUT:
case EXP_EOF:
break 2; default:
die ("Error has occurred!\n");
}
}

解决方案 »

  1.   

    搞定了,分享给大家。
    $stream = expect_popen("svn log https://svn.intra.abc.com/index.php --limit 1 --username=$svnusr");$cases = array (
      array (0 => "Password for '$svnusr':", 1 => PASSWORD),
      array (0 => "yes/no)?", 1 => YESNO),
      array (0 => "(p)ermanently?", 1 =>ISACCEPT),
      array (0 => "[.\n]*-*", 1 => FINISH)
    );while(true) {
        switch(expect_expectl($stream, $cases, $match)) {
            case ISACCEPT:
                fwrite($stream, "t\n");
                break;        case PASSWORD:
                fwrite ($stream, "$svnpwd\n");
                break;        case YESNO:
                fwrite ($stream, "yes\n");
                break;        case FINISH:
                $return = $match[0];
            case EXP_TIMEOUT:
            case EXP_EOF:
            break 2;        default:
            die ("Error has occurred!\n");
        }
    }