n=5
for i in {1..$[n]}
do
echo $i
done
それは与えます:
{1..5}
しかし、出力する必要があると思います:
1
2
3
4
5
なぜこのような奇妙な出力が得られるのでしょうか?
それはほとんどなぞなぞです。中括弧の展開は、変数展開の前に行われています。bash の初心者向けガイドには、展開に関する詳細 が記載されています。bash でこれを行う方法は無数にあります。あなたはから始めることができます:
n=5
for i in $(eval echo {1..$n})
do
echo $i
done