Cat命令无法循环工作

时间:2014-03-06 05:25:14

标签: shell for-loop terminal cat

我在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

1 个答案:

答案 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和分隔符。 (没有空格