未检测到结束 EOF
Ending EOF not detected
我有以下功能;
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 = '');
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
没有被选中吗?谢谢!
它失败了,因为关闭的 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 = '');
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
没有被选中吗?谢谢!
它失败了,因为关闭的 EOF
单词有尾随空格。它必须单独成一行,没有前导或尾随空格。
一个例外是使用 <<-
语法时,在这种情况下,结束词前面可以有一个或多个制表符(但不能有空格)。