0

このようなスクリプトを実行しようとしています。間接参照を使用してスクリプトを受け入れます

sh <<EOT
for str in `cat test`
do
 echo $str
done
EOT

ファイル「テスト」には内容があります

a
b
c

以下のエラーが発生します。

sh: line 2: syntax error near unexpected token `b'
sh: line 2: `b'

誰でも明確にできますか?私の目的は、シェル スクリプト ファイル script.sh を作成して実行するのではなく、上記のようなスクリプトを実行することです (正常に動作します)。

4

1 に答える 1

1

あなたの外殻はHEREDOCを補間しています。これを防ぐには、区切り文字を引用します。

sh << 'EOT'

明確にするために、あなたが持っているものは次のものと同等です:

sh <<EOT
for str in a
b
c
do
 echo
done
EOT

これにより、構文エラーがかなり明白になります。

于 2013-04-09T06:58:24.853 に答える