2016-04-04 6 views
0

У меня есть следующая функция;Окончание EOF не обнаружено

function getdetails { 
    if ! "${PSQL_PATH}" -d "$DB" -U "$DB_USER" -h localhost -p "$DB_PORT" -t -c | while read -a Record ; do 
     taskid="${Record[0]}" 
     clientname="${Record[1]}" 
     backup_pass="${Record[2]}" 
     backup_dir="${Record[3]}" 
     done; then 
      echo "Could not fech next task metadata from database" 
      exit 1 
     fi <<EOF 
     WITH firsttask AS (SELECT taskid from tasks 
          WHERE status = 'PENDING' 
          ORDER BY date_started ASC 
          LIMIT 1) 
     SELECT taskid, username, storage_password AS backup_password, location AS backup_dir 
     FROM firsttask 
     INNER JOIN users USING (userid) 
     INNER JOIN storage USING (userid) 
     WHERE (username = '$1'); 
EOF 
} 

По какой-то причине, баш не обнаруживает последние EOF и отчеты: ./processor.sh: line 138: warning: here-document at line 41 delimited by end-of-file (wanted `EOF') ./processor.sh: line 139: syntax error: unexpected end of file

Любые идеи, почему EOF не подобрали? Спасибо!

ответ

1

Это не получается, потому что слово закрытия EOF имеет завершающие пробелы. Он должен быть на линии сам по себе, без ведущего или конечного пробела.

Исключением является использование синтаксиса <<-, и в этом случае закрывающему слову может предшествовать одна или несколько TAB (но никогда не пробелы).

+0

Не могу поверить, что я пропустил это. Спасибо! – Niels

Смежные вопросы