How to use a here document in a loop? [duplicate]

2020-02-12 14:15发布

This works:

name="test.txt"

yap -q << % > $name
  [experiment_yap],
  exp1_min(brother,2).
%

This does not:

for i in 01 02 03 04 05
do
  name="test.txt"

  yap -q << % > $name
    [experiment_yap],
    exp1_min(brother,2).
  %
done

I receive line 19: syntax error: unexpected end of file

标签: bash shell
1条回答
贼婆χ
2楼-- · 2020-02-12 15:09

It's not being in a loop that's significant here. bash doesn't really know or care about indentation -- to recognize the end of the heredoc the terminating string must be at the beginning of the line, which makes your loop look like:

for i in 01 02 03 04 05
do
  name="test.txt"

  yap -q << % > $name
    [experiment_yap],
    exp1_min(brother,2).
%
done
查看更多
登录 后发表回答