【问题标题】:Bash: warning: here-document at line delimited by end-of-file (wanted `EOF') [duplicate]Bash:警告:here-document位于由文件结尾分隔的行(需要'EOF')[重复]
【发布时间】:2012-09-12 06:51:11
【问题描述】:

bash 中的以下函数会出现标题中提到的错误。当最后的EOF 不在行首时,通常会出现该错误。

EOF 在开头,所以我看不出有什么问题。在脚本的更上方(未显示)还有其他 here-docs,它们可以工作。

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
}

【问题讨论】:

  • 如果您喜欢某个答案,请务必将其标记为已接受的答案。它为响应者提供声誉积分,并让其他人知道您不是在寻找更好的答案。
  • @tripleee 这是完全重复的:这个问题明确指出没有缩进,其中欺骗目标的问题 缩进(即使您必须通读 cmets 才能看到那个)。 OTOH,它可能被认为是规范的,因为最佳答案解决了这两个问题。
  • 嗯,所以你基本上同意重复标记?还是你建议我改变一些东西?

标签: bash eof heredoc


【解决方案1】:

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

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

【讨论】:

  • 当然,这解决了我遇到的类似问题 - here-document 终止符字符串后的额外空格。
  • 在我的情况下并不总是一个空格,它是一个标签。
  • 不错的侦探;底线是 nothing 可以放在关闭的 here-document 分隔符之后。
  • 在我的情况下,缩进“EOF”似乎也使其无效。
猜你喜欢
  • 2018-05-09
  • 2020-12-24
  • 2015-01-27
  • 2019-08-13
  • 2013-08-08
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多