У меня есть скрипт bash, который я регулярно использую в своей работе для автоматизации большой работы. Я вносил некоторые изменения сегодня, но все казалось хорошо. Сам скрипт имеет длину около 1700 строк. Первая часть скрипта все хорошо и проходит через весь пользовательский ввод и логику просто отлично. Затем он переходит в ядро сценария и перестает работать точно в строке 875 (протестировал сценарий с помощью bash -x
, чтобы найти точку останова). Тем не менее, он ломается со следующей ошибкой:
script.sh: line 1341: syntax error near unexpected token `;;'
script.sh: line 1341: ` ;;'
Строка 1341 находится в середине оператора case
. Следующий код является началом этого блока кода, где он ломается:
if [[ $VAR1 = "TRUE" && $VAR2 = "VAL2" ]]; then
VERSION=`XXXXXXXXXXXXXXXX`
## Set variables based on location $VAR3
case $VAR3 in
STR1 )
case $VERSION in
STR2 )
VAR4 = "STR5"
VAR5 = "STR6"
VAR6 = "STR7"
VAR7 = "STR8"
Line 1341 ---> ;;
STR3 )
VAR4="STR9"
VAR5="STR10"
VAR6="STR11"
VAR7="STR12"
;;
STR4 )
VAR4="STR13"
VAR5="STR14"
VAR6="STR15"
VAR7="STR16"
;;
esac
VAR8="STR17"
VAR9="STR18"
VAR10=1
VAR11="STR19"
;;
Из-за деликатного характера того, что я делаю, мне, очевидно, пришлось удалить довольно много информации. Я знаю, что это может усложнить мне задачу. Однако все VAR ## = "STR ##" являются стандартными объявлениями переменных со строковыми значениями, ничего особенного (без подстановки переменных и т. Д.). Все переменные используются позже в скрипте. Код для VERSION возвращает строковое значение, которое используется во вложенном case
.
Скрипт работал нормально до сегодняшних изменений, но я действительно не затрагивал этот раздел, за исключением настройки некоторых значений STR. Я попытался установить переменные $VAR3
и $VERSION
в кавычках "", а также значения STR, используемые в качестве случаев. Я попытался вынуть этот блок полностью, только чтобы он потерпел неудачу в следующем блоке (STR1 имеет другое значение, поэтому измените объявления переменных). У меня есть вывод на консоль, что он делает, а также проверяет наличие ошибок после большинства функций. На консоли нет ничего необычного и ничего в журнале ошибок.
Буду признателен за любую помощь, и я знаю, что прошу много.
Кстати, вот код в строке 875, где скрипт перестает работать (здесь нет ошибок, сгенерированных на основе кода). Опять же, с помощью bash -x
я мог видеть, как устанавливается переменная VAR2, но сценарий прерывается до запуска следующего цикла for
.
## Create file ##
echo 'Creating files . . . '
j=0
p=1111
if [ $VAR1 = "TRUE" ]
then
VAR2=1
else
VAR2=2
fi
for i in `seq 1 $HOWMANY`; do <----Line 875
echo -n "Creating file . . . "
echo "XXXXXXXXXXX
Еще раз спасибо.