LINUX.ORG.RU

system ($cmd, $ret) // $ret обманывает

 , , ,


0

1

file_name/$fname — файл с заведомо некорректным (с т. з. JSLint) js.

PHP:

$options = '--onevar true --white true --plusplus true --nomen true --regexp true --continue true --browser true --passfail false';
$patt = "/usr/local/bin/jslint $options %s";
$cmd = sprintf ($patt, $fname);
system ($cmd, $ret);
var_dump ($ret); // int(0)
Bash:
/usr/local/bin/jslint --onevar true --white true --plusplus true --nomen true --regexp true --continue true --browser true --passfail false file_name
echo $? #1

Почему так? В других случаях system работает нормально.

Да потому что echo $? завершается с нулевым статусом (ему же всё удалось), и этот статус становится статусом bash.

LeninGad ()
Ответ на: комментарий от LeninGad

Нет, это два разных примера.
Выполняется одна и та же команда /usr/local/bin/jslint --onevar true --white true --plusplus true --nomen true --regexp true --continue true --browser true --passfail false file_name.

Если ее выполнить в баше, то возвращает 1, если через system, то 0.

metrokto ★★ ()

Это баг JSLint'a. JSHint работает отлично.

metrokto ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.