bash : Плохая подстановка в переменной массива

#bash #shell

Вопрос:

Ниже приведена моя выдержка из части об отказе:

 if [[ -n "${war_to_be_deployed-}" ]] ; then  [[ "${#runtime_args[@]-}" == "${#expected_runtime_args[@]-}" ]] || _fatal "Failed runtime_args"   for ((i=0 ; ilt;${#runtime_args[@]-} ;   i)); do  

выдает ошибку ниже на bash GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu) . Что я здесь делаю неправильно ? Спасибо.

${#runtime_args[@]-}: bad substitution

Комментарии:

1. Почему есть - в ${#runtime_args[@]-} и ${#expected_runtime_args[@]-} ? В этом нет необходимости

Ответ №1:

${#runtime_args[@]} — количество элементов в массиве. Проверка - -это то, что вызывает ошибку. Сгенерирован ли этот сценарий? Мне это кажется синтаксической ошибкой.

Комментарии:

1. Нет, он не сгенерирован, он отлично работает в предыдущей версии Ubuntu, версия Ubuntu 14