bash shell脚本heredoc问题

时间:2013-01-28 11:49:16

标签: bash shell

我想运行这样的bash shell脚本:

  读取文件时

;

     

DO

   echo $file;
     

完成<< eof

     

$(ls)

     

EOF;`

它在示例.sh文件中运行良好。但是当把它放在像这样的函数中时:

function {
    while read file;
    do
        echo $file;
    done << eof 
    $(ls) 
    eof;
}

它不适合我。

我现在不知道如何修复它。

3 个答案:

答案 0 :(得分:1)

尝试取消缩小你的eof:

function {
    while read file;
    do
        echo $file;
    done << eof 
    $(ls) 
eof;
}

答案 1 :(得分:1)

不要缩进你的heredoc,你的eof标记不应该有一个尾随的分号

答案 2 :(得分:1)

在bash中:如果您希望在<<-TERMINATION字符串之前忽略空格,请使用TERMINATION(但如果您更喜欢兼容性,请使用<<TERMINATION并单独使用TERMINATION从第一列开始。如果尾随;也是问题,请将其放在下一行(如果您愿意,可以放置: ;

并为您的功能命名:function myfunction { ... }(或更兼容:myfunction () { ... }