我在for循环中有一个Cat命令。 for循环遍历了一堆文件夹。
在我的代码中,除了cat命令和外部循环之外,我基本上都将所有内容都注释掉了。一旦我注释掉循环,cat命令就可以了。当我删除cat命令以及其中的内容时,一切都有效。
我得到的错误是:语法错误:意外的文件结束。它始终指的是最后一行,就是在这种情况下完成的。
#!/bin/sh
cd $HOME/filedirectory
for k in *; do
cat > $HOME/mongodb/bin/script1.js << EOF
##commented out stuff
EOF
done
答案 0 :(得分:0)
您需要在结束前删除EOF前的空格:
#!/bin/sh
cd $HOME/filedirectory
for k in *; do
cat > $HOME/mongodb/bin/script1.js << EOF
##commented out stuff
EOF
done
根据man bash
:
如果重定向运算符是&lt;&lt; - ,则从输入行和包含分隔符的行中删除所有前导制表符。这允许在这里 - 文件 - shell脚本中的内容以自然方式缩进。
因此,您可以将heredoc运算符更改为<<-
。然后你可以用标签缩进heredoc和分隔符。 (没有空格)