bash 命令 cat 在 if 语句中不起作用

bash command cat doesn't work inside an if statement

我可以使用 bash 脚本和 cat 命令创建包含内容的文件,如下所示:

#!/bin/sh

cat >myFyle.txt <<EOL
Some text inside the file
EOL

这按预期工作。但是当我尝试在 if 语句中使用它时,如下所示:

#!/bin/sh

if true; then
    cat >myFyle.txt <<EOL
    Some text inside the file
    EOL
fi

我收到错误消息:

Syntax error: end of file unexpected (expecting "fi")

为什么这不起作用,我如何在 if 语句中正确使用 cat

注意:if 语句的条件是示例性的。这只是为了确保示例执行代码。

结束分隔线必须完全 EOL。前面没有空格。

if true; then
    cat >myFyle.txt <<EOL
    Some text inside the file
EOL
#^^^ Spaces above will be preserved!
fi

您可以使用<<-EOL,然后在前面使用制表符(不是空格!),它会被忽略。

if true; then
    cat >myFyle.txt <<-EOL
    Some text inside the file
    EOL
#^^^ - This is a tab. Tabs in front will be ignored.
fi