bash 4.1.x~4.2.xあたりで使ってた以下のようなスクリプトを4.4.xのbashで動かしたときにエラーが出るようになった
sample.sh
param += ( $@ )
sample_var += ${param[@]:1:((${#param[@]-2}))}
echo ${sample_var}
内容としては、引数を配列paramにいれてそっからparamの一部をsample_varに格納するという内容だが
4.2.xまでのbashで実行した場合は特にエラーは発生せず期待通りの出力が得られた。
しかし、4.4.xで実行した場合は以下のエラーとなる。
line 2: ((${#param[@]-2})): bad substitution
まぁ、そもそも2行目のsyntaxが間違っていて
正しくは以下だ。これなら4.4.x~でも動く。
sample_var += ${param[@]:1:((${#param[@]}-2))}
古いバージョンのbashだと上手く動いてたのが謎。
詳しいことはよくわからないので有識者の方説明お願いします。