0

我想像这样运行一个 bash shell 脚本:

读取文件时;

   echo $file;

完成<< eof

$(ls)

eof;`

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

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

它对我不起作用。

我现在不知道如何解决。

4

3 回答 3

1

尝试取消缩进你的 eof:

function {
    while read file;
    do
        echo $file;
    done << eof 
    $(ls) 
eof;
}
于 2013-01-28T11:50:32.317 回答
1

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

于 2013-01-28T11:51:27.950 回答
1

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

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

于 2013-01-28T14:43:26.840 回答