Подтвердить что ты не робот

Код выхода команды подстановки в bash присвоении локальной переменной

Как проверить код выхода подстановки команды в bash, если присвоение является локальной переменной в функции?
См. Следующие примеры. Второй - это то, где я хочу проверить код выхода.
У кого-то есть хорошее решение или правильное решение для этого?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
4b9b3361

Ответ 1

Если вы посмотрите на man файл для local (который на самом деле представляет собой только страницу BASH builtins man), он рассматривается как его собственная команда, которая дает код выхода 0 при успешном создании локального переменная. Таким образом, local перезаписывает последний выполненный код ошибки.

Попробуйте следующее:

function testing { local test; test="$(return 1)"; echo $?; }; testing

EDIT: Я пошел вперед и попробовал это для вас, и он работает.