Решение заключалось в использовании бесплатных драйверов, которые я переключу на не -бесплатные после установки
Контраст:
$ bash -e -c 'export a=$(false); echo >&2 "If you see this, the previous command succeeded"'
If you see this, the previous command succeeded
$ bash -e -c 'a=$(false); echo >&2 "If you see this, the previous command succeeded"'
В вашей попытке команда внутри подстановки команд завершилась неудачно, но команда , содержащая подстановку команд, выполнена успешно. Статус подстановки команды не влияет на статус содержащей команды, если это обычная команда, включая вызов встроенной команды export
. Статус подстановки команды имеет значение только в том случае, если она находится в назначении :статус команды назначения — это статус последней подстановки команды в команде или 0, если подстановки команды нет (при условии отсутствия ошибки в самом присваивании, например при попытке присвоить переменную )только для чтения -.
Чтобы ваш скрипт останавливался при первой ошибке, вам нужно включитьinherit_errexit
и поместить каждую подстановку команд в отдельное назначение. Это должно быть простое назначение. :экспорт переменной должен быть отдельной командой.
$ bash -e -O inherit_errexit -c 'export a=$(false; echo >&2 "If you see this, errexit is off inside command substitution"); echo >&2 "If you see this, the previous command succeeded"'
If you see this, the previous command succeeded
$ bash -e -O inherit_errexit -c 'a=$(false; echo >&2 "If you see this, errexit is off inside command substitution"); echo >&2 "If you see this, the previous command succeeded"'