Вы правы, но я бы не стал утверждать, что функции используются неправильно.
Честно говоря, я не понимаю части
"${LSB:-}"
, так как я нигде не могу найти эту переменную LSB
И я не могу найти где-либо установленную $LSB. Я могу только догадываться, почему эта переменная проверяется; полный тест:
[ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success
Результатом теста является запуск echo_success
, если значение переменной BOOTUP равно не "подробным", а переменная LSB не набор. Определение синтаксиса ${varname:-text}
:
${parameter:-word} Используйте значения по умолчанию.
Если параметр не установлен или равен нулю, подставляется расширение слова. В противном случае подставляется значение параметра.
Здесь после тире нет «слова», поэтому, если $LSB не установлен или равен нулю, то все расширение приводит к (ничего), что позволяет пройти тест -z
.
Мое предположение заключается в том, что логика существует на тот случай, если вы захотите изменить поведение сценария инициализации, чтобы он не запускал эти функции success() или failure().
Во-вторых,
как сценарии используют функцию успеха, например, последняя строка функции демона:
[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
Вы правы в том, что эти параметры передаются функциям, но не используются. Безвредно передавать параметры, которые не используются — это просто непоследовательно/запутанно! Мое предположение заключается в том, что предыдущие версии этих функций рассматривали (возможно, регистрировали?) переданные параметры.
Обратите внимание, что функция init_crypto()
вызывает success() (или failure()) без параметров!