Может кто-нибудь объяснить, почему конец файла неожиданный в строке 49? (Строка 49 - одна строка после последней строки)
#!/bin/bash
timeend=$(date -u +%H%M)
timestart=$(date --date "$timeend 30 minutes ago" -u +%H%M)
firsttime=0
while true
do
if [[ $firsttime -eq 0 ]]; then
time=$timestart
increment=0
fi
if [[ $firsttime -ne true ]]; then
increment=$(( $increment + 2 ))
time=$(( $timestart + $increment ))
fi
if [[ $time -ge $timeend ]]; then
break
fi
gpnids << EOF
RADFIL = NEXRIII|CLT|TR0
RADTIM = "$time"
TITLE = 1/-2
PANEL = 0
DEVICE = gif|radar"$increment".gif|1280;1024|C
CLEAR = Y
TEXT = 1/2/2/hw
COLORS = 7
WIND =
LINE =
CLRBAR =
IMCBAR = 5/v/LL/.005;.6/.4;.01
GAREA = dset
MAP = 24 + 23 + 1/1/2 + 14 + 15/1/2
LATLON = 0
OUTPUT = t
$mapfil = lorvus.usg + hicnus.nws + hipona.nws + louhus.nws + loisus.nws
run
exit
EOF
firsttime=1
gpend
done
Необходимо было также получить другую ошибку, которая, возможно, более информативна:
/home/terdon/scripts/b.sh: строка 49: предупреждение: здесь-документ в строке 21 разграниченный к концу файла (хотел 'EOF')
/home/terdon/scripts/b.sh: строка 50: синтаксическая ошибка: неожиданный конец файла
, которым Ваша ошибка состоит в том, что у Вас есть пробелы перед строкой, которая заканчивает heredoc. Для взятия простого примера это жалуется:
#!/bin/bash
cat << EOF
hello
EOF
, Но это не делает:
#!/bin/bash
cat << EOF
hello
EOF
Я получаю две строки, которые должны помочь Вам разработать то, что продолжается:
./test: line 48: warning: here-document at line 21 delimited by end-of-file (wanted `EOF')
./test: line 49: syntax error: unexpected end of file
Ваш heredoc
(<< EOF
) конструкция неправильно формируется. Это - пробел, чувствительный так Вы любая полоса это назад:
...
command <<EOF
...
EOF
Или сообщают ему, Вы снабжаете вкладками его (и это должна быть вкладка ):
...
command <<-EOF
...
EOF
я предпочитаю второе, потому что это позволяет Вам структурировать сценарий намного лучше... Что-то Ваш сценарий могло уже извлечь выгоду из.
Если Вы используете энергию, или vi пытаются использовать команду
:set list
, Вы сможете видеть пробелы между символом $
Иногда, Это пригодилось для выяснения некоторого неожиданного поведения.
В этом случае удаляют пробелы, закончил задание.
%>: строка 49: предупреждение: здесь-документ в строке 21 разграниченный к концу файла (хотел 'EOF')
EOF
Это может быть обращено путем удаления пробелов, или как , Terndon указывает вкладки использования - я не знал этот
<час>Другая распространенная ошибка для конца ошибки файла, которая происходит, занимается пробельными проблемами. Обычно от копирования кода, онлайн форматированного для Windows и выполнения его в Linux.
Это может быть обращено путем выполнения dos2unix
на файле для быстрого преобразования тех символов.