0

次のようなbashシェルスクリプトを実行したい:

ファイルの読み取り中。

行う

   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

ヒアドキュメントをインデントしないでください。また、eofマーカーの末尾にセミコロンを付けないでください。

于 2013-01-28T11:51:27.950 に答える
1

bash の場合:文字列<<-TERMINATION の前の空白を無視する場合に使用しTERMINATIONます (ただし、互換性を優先する場合は、行に<<TERMINATIONand have をTERMINATION単独で使用し、最初の列から開始します。末尾;も問題になる場合は、次の行に配置します(または、必要に: ;応じて入れます)

そして、関数に名前を付けます : function myfunction { ... } (または、より互換性のある : myfunction () { ... } )

于 2013-01-28T14:43:26.840 に答える