没有分隔符的heredocument

没有分隔符的heredocument

这个帖子,斯蒂芬的回答显示了这段代码:

cat <<-"EOF1" >> myPath/myFile.append
if ! grep -F -q -f myPath/myFile{.append,}; then
    cat myPath/myFile.append >> myPath/myFile
fi

为什么heredocument没有分隔符?

答案1

我测试的所有 shell 都可以很好地读取此处文档,即使没有终止符,此处文档也会在文件末尾结束。 Bash 会对此发出警告,但 busybox/dash/ksh 和 zsh 只是默默地处理它。

例如

$ cat heredoctest.sh
#!/bin/bash
cat -n <<EOF
foo
bar
$ bash heredoctest.sh
heredoctest.sh: line 4: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')
     1  foo
     2  bar

但您提供的特定代码示例似乎是一个错误。正如它所写的,它只会将 if 语句附加到myPath/myFile.append,这似乎不太有用。看起来 here-doc 内容和终止符在cat和之间丢失了if

相关内容