Обертывание целого в функцию, кажется, добивается цели:
#!/bin/bash -e
main () {
readonly a=(1 2)
# A syntax error is here:
if (( "${a[#]}" == 2 )); then
echo ok
else
echo not ok
fi
echo status $?
echo 'Bad: has not aborted execution on syntax error!'
}
main "$@"
Результат:
$ ./sh-on-syntax-err
$ ./sh-on-syntax-err line 6: #: syntax error: operand expected (error token is "#")
$
Хотя у меня нет подсказки, почему - возможно, кто-то еще может объяснить?
Чтобы перейти к разделу под курсором, используйте Ctrl ] (это правая скобка, а не j ):
Прыжки вокруг
Текст содержит гиперссылки между двумя частями, что позволяет быстро переходить между описанием задачи редактирования и точным объяснением используемые для этого команды и параметры. Используйте эти две команды:
Нажмите CTRL-], чтобы перейти к теме под курсором. Нажмите CTRL-O, чтобы вернуться назад (повторите, чтобы вернуться назад).