У меня есть фреймворк, написанный на python, и для целей тестирования я в основном хочу выполнить подпроцесс (он же вызов оболочки) ... который должен просто вернуться с RC! = 0. Я попытался вызвать некоторые несуществующие исполняемый файл; или запустить «выход 1»; но они по какой-то причине переведены в FileNotFoundError.
Итак, что еще я мог сделать, чтобы вызвать код возврата! = 0 («надежным» способом; это означает, что команда не должна внезапно возвращать 0 в будущем).
Я подумал «искать» двоичный файл, называемый exit, но хорошо:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
Если Вы ищете система команда, которая всегда возвращает ненулевой код выхода, то /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.
Можно создать новый код возврата с командой bash -c "exit RETURNCODE"
, заменив "КОД ВОЗВРАТА" любым числом. Обратите внимание, что это будет обрезано к целому числу без знака на 8 битов (0... 255) (модификация КОДА ВОЗВРАТА 256)
можно проверить код возврата последней команды оболочки в терминале (!) с выполнением echo $?
. "$?" переменная содержит новый код возврата, и "эхо" печатает его к стандартному выводу.
Еще после некоторого тестирования я нашел, что моя проблема не была на стороне "Linux".
Python имеет модуль shlex; который должен использоваться для "разделения" командных строк. Когда я изменил свой вызов подпроцесса для использования вывода shlex.split()
, вызов "bash exit 1" дает мне, в чем я нуждаюсь.