У меня есть среда, написанная на python, и для целей тестирования я в основном хочу выполнить подпроцесс (он же вызов оболочки) ... который должен просто вернуться с RC! = 0. Я попытался вызвать какой-нибудь несуществующий исполняемый файл; или запустить «выход 1»; но они по какой-то причине переводятся в FileNotFoundError.
Итак, что еще я мог сделать, чтобы вызвать код возврата! = 0 («надежным» способом; это означает, что команда не должна внезапно возвращать 0 в будущем).
Я подумал «искать» двоичный файл с именем exit, но хорошо:
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
command-line
bash
python
scripts
GhostCat
источник
источник
exit 1
это перспективный путь. Ошибка FileNotFoundError должна быть вызвана чем-то другим./bin/false
?Ответы:
Если вы ищете системную команду, которая всегда возвращает ненулевой код завершения, тогда,
/bin/false
похоже, она должна работать для вас. Отman false
:источник
/bin/false 5; echo $?
5
) игнорируютсяС помощью команды вы можете создать новый код возврата
bash -c "exit RETURNCODE"
, заменив «RETURNCODE» на любое число. Обратите внимание, что оно будет обрезано до 8-битного целого числа без знака (0 ... 255) с помощью (RETURNCODE mod 256)Вы можете проверить код возврата последней команды оболочки внутри терминала (!) При выполнении
echo $?
. "$?" переменная содержит самый последний код возврата и «echo» выводит его на стандартный вывод.источник
exit RETURNCODE
(безbash -c
части)После еще одного тестирования я обнаружил, что моя проблема не в стороне от Linux.
Python имеет модуль shlex; который должен использоваться для "разделения" командных строк. Когда я изменил свой вызов подпроцесса, чтобы использовать вывод
shlex.split()
вызова "bash exit 1", я получил то, что мне нужно.источник