Force & ldquo; bad & rdquo; (не 0) код возврата команды терминала?

У меня есть фреймворк, написанный на python, и для целей тестирования я в основном хочу выполнить подпроцесс (он же вызов оболочки) ... который должен просто вернуться с RC! = 0. Я попытался вызвать некоторые несуществующие исполняемый файл; или запустить «выход 1»; но они по какой-то причине переведены в FileNotFoundError.

Итак, что еще я мог сделать, чтобы вызвать код возврата! = 0 («надежным» способом; это означает, что команда не должна внезапно возвращать 0 в будущем).

Я подумал «искать» двоичный файл, называемый exit, но хорошо:

> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
8
задан 10 April 2015 в 16:38

3 ответа

Если Вы ищете система команда, которая всегда возвращает ненулевой код выхода, то /bin/false кажется, что это должно работать на Вас. От man false:

NAME
       false - do nothing, unsuccessfully

SYNOPSIS
       false [ignored command line arguments]
       false OPTION

DESCRIPTION
       Exit with a status code indicating failure.
16
ответ дан 10 April 2015 в 16:38

Можно создать новый код возврата с командой bash -c "exit RETURNCODE", заменив "КОД ВОЗВРАТА" любым числом. Обратите внимание, что это будет обрезано к целому числу без знака на 8 битов (0... 255) (модификация КОДА ВОЗВРАТА 256)

можно проверить код возврата последней команды оболочки в терминале (!) с выполнением echo $?. "$?" переменная содержит новый код возврата, и "эхо" печатает его к стандартному выводу.

6
ответ дан 10 April 2015 в 16:38

Еще после некоторого тестирования я нашел, что моя проблема не была на стороне "Linux".

Python имеет модуль shlex; который должен использоваться для "разделения" командных строк. Когда я изменил свой вызов подпроцесса для использования вывода shlex.split(), вызов "bash exit 1" дает мне, в чем я нуждаюсь.

0
ответ дан 10 April 2015 в 16:38

Другие вопросы по тегам:

Похожие вопросы: