重击:警告:此处文档位于文件末尾的行(需要使用“ EOF”)

Bash: warning: here-document at line delimited by end-of-file (wanted `EOF')

本问题已经有最佳答案,请猛点这里访问。

bash中的以下功能带有标题中提到的错误。 当最后一个EOF不在行首时,通常会出现该错误。

EOF是开头,所以我看不到哪里有问题。 在脚本的后面(未显示),还有其他here-docs,它们也可以工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
add_testuser()
{
    kadmin -p admin -q addprinc test
    cat <<EOF > ~/test.ldif
dn: cn=test,ou=groups,dc=${ARRAY[1]},dc=${ARRAY[2]}
cn: test
gidNumber: 20001
objectClass: top
objectClass: posixGroup

dn: uid=test,ou=people,dc=${ARRAY[1]},dc=${ARRAY[2]}
uid: test
uidNumber: 20001
gidNumber: 20001
cn: First_name
sn: Last_name
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/test
userPassword: {CRYPT}*
EOF

    ldapadd -Qf ~/test.ldif
    kdestroy; kinit test
    klist
    ldapwhoami
}


最后一个EOF后有一个空格,因此它无法终止heredoc。

p / s:复制粘贴代码时注意到这一点。