2016-04-04 24 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 
} 

、bashは最後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単語の末尾に空白があるため、失敗します。行頭に空白がなくてはならない。

<<-構文を使用している場合は例外です。この場合、終了単語の前に1つ以上のTABがありますが、スペースは使用できません。

+0

私はこれを逃したとは思わない。ありがとうございました! – Niels

関連する問題