Зачем использовать + = для сохранения статуса завершения команды в bash? - PullRequest
1 голос
/ 11 февраля 2020

Недавно я столкнулся с этим шаблоном в сценарии Bash:

function foo {
  declare -i status=0
  # command(s)
  (( status += $? ))
  return $status

Зачем кому-то использовать += для сохранения состояния выхода (вместо просто status=$?)?

1 Ответ

0 голосов
/ 11 февраля 2020

Стандарт POSIX ограничивает код состояния выхода для приложения int. Это означает, что вы можете вернуть указанный c код для указанной ошибки c, например:

0 - Нет ошибок
1 - IO Exception
2 - Runtime Exception
3 - HD head cra sh
et c.

Но что, если ваше приложение зависло по нескольким причинам? Способ передать это - вернуть сумму кодов выхода, которые работают немного похоже на 777 при работе с разрешениями :

0 - без сбоев
1 - IO Exception
2 - Runtime Exception
4 - HD head cra sh

Теперь, если вы можете суммировать исключения, и сумма скажет вам, что пошло не так:

3 = 1 + 2 = исключение ввода-вывода + исключение времени выполнения
5 = 1 + 4 = исключение ввода-вывода + кратер головки HD sh
6 = 2 + 4 = исключение времени выполнения + ускорение головки HD sh
7 = 1 + 2 + 4 = IO Exception + Runtime Exception + HD head cra sh

Это может быть причиной, по которой они возвращают сумму кодов выхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...