Существует ли простая команда Bash, которая просто устанавливает код выхода?

Python-версия вашей оболочки. Будьте осторожны, я не проверял.

from subprocess import run

def bash(command):
        run(command.split())

>>> bash('find / -name null')
/dev/null
/sys/fs/selinux/null
/sys/devices/virtual/mem/null
/sys/class/mem/null
/usr/lib/kbd/consoletrans/null
0
30.12.2020, 08:18
2 ответа

Одним из запутанных вариантов может быть:

. /dev/stdin <<< 'return "$exit_code"'

(не разветвляется, а создает временный файл или канал в 5.1+)

Для полноты картины

Обратите внимание, что в ksh93 (exit "$ret")не разветвляет подоболочку, поэтому там он относительно эффективен.

bash— одна из немногих оболочек, подобных Bourne -, где нельзя написать set_status() return "$1"для краткости.

В zshвы можете использовать анонимную функцию:

() return 3

Когда у меня возникает такая потребность, я лично использую:

set_status() { return "$1"; }

Который кажется мне самым простым.

Но в заключение, ответ на есть ли простая команда Bash, которая просто устанавливает код выхода нет AFAIK.

4
18.03.2021, 22:39

Я считаю, что настраиваемая функция — ваш лучший выбор (вариант 2 в вашем вопросе ).

0
18.03.2021, 22:39

Теги

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