Мои опыты с более новыми (приличными) языками. Я привык иметь попытку/улов в моем распоряжении.Как выйти, если у Bash есть ошибка выражения, например [: -ne: ожидаемый операционный оператор
Я обязан своим клиентом использовать Bash.
У меня есть сценарий, который сделает что-то очень рискованное, но первая часть скрипта - это проверка того, что все так, как ожидалось, прежде чем мы начнем рискованную процедуру. Во время этой фазы проверки я хочу, чтобы, если что-то не так, немедленно выйдите.
Поэтому я использую:
set -e -u -o pipefail
set -o errtrace
Но сценарий все еще продолжает после генерации ошибки как:
[: -ne: unary operator expected
Он продолжит выполнение сценария, и начать рискованную процедуру, даже если проверка не удалась !
Как я могу обнаружить ошибку такого типа в Bash во время выполнения?
ли вы попробовать '-n ... Читать команды, но не выполнять их. Это можно использовать для проверки сценария оболочки для синтаксических ошибок. Это игнорируется интерактивными shells.' из раздела 'set'' man bash'. Удачи. – shellter
Синтаксическая ошибка с переменным расширением в некоторых случаях, также, что код не будет достигнут, если предыдущая команда не будет выполнена. –
хорошо, если вы имеете в виду переменное расширение, как в строке 'myVar =" с пробелами "; if [[$ myVar == 'string with spaces']] ', тогда вам нужно прочитать через http://stackoverflow.com/tags/bash/info. Помните, что переменные dbl-quote находятся в верхних пяти вещах, которые вам всегда нужно делать. Хотя 'try/catch', безусловно, хорошо, вы можете обнаружить, что скрипты' shell' решают большую (иш) группу проблем с минимальным избыточным кодированием. Удачи. – shellter