コマンド置換$(...)
の 中に制御構文(ifやwhile)を
入れて更にその中にヒアストリング<<<
を使うとbash 4.0.0のみシンタックスエラーが発生する。
- パッチバージョンが上がった bash 4.0.44ではこのバグは修正されている。
- ヒアストリングではなく
echo(1)
などではエラーは発生しない。 - ヒアドキュメントでは発生しない。
下記のatest.sh
を用意する。
#!/bin/bash
echo $(
for i in 1 2 3
do
cat <<<"test$i";
done
)
$ bash atest.sh
test1 test2 test3
$ bash atest.sh
atest.sh: line 2: unexpected EOF while looking for matching `)'
atest.sh: line 8: シンタックス エラー: 期待してないファイルの終了
$ bash atest.sh
test1 test2 test3
$ bash atest.sh
test1 test2 test3