【问题标题】:Ending EOF not detected [duplicate]未检测到结束 EOF [重复]
【发布时间】:2016-04-04 09:43:36
【问题描述】:

我有以下功能;

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 没有被接收吗?谢谢!

【问题讨论】:

    标签: bash eof psql


    【解决方案1】:

    它失败是因为结束 EOF 单词有尾随空格。它必须单独在一行上,没有前导或尾随空格。

    一个例外是使用&lt;&lt;- 语法时,在这种情况下,结束词前面可能有一个或多个制表符(但不能有空格)。

    【讨论】:

    • 不敢相信我错过了这个。谢谢!
    • 谢天谢地,我找到了这个
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多