当序列结束是变量时,Bash for循环失败

时间:2017-09-22 11:23:17

标签: bash

我想编写一个从日期开始的for循环(以字符串形式接收)并在所有日期中循环一段时间。 我最终解决了这个问题,但我不明白为什么另一次尝试失败了,我希望得到解释。

这是最终解决方案:

a=3
start_date="2017-09-01"
for ((i=0;i<$a;i++));
do
cur_date=`date -d $start_date" -"$i" days"`
echo $cur_date
done

导致:

Fri Sep 1 00:00:00 CEST 2017 
Sat Sep 2 00:00:00 CEST 2017 
Sun Sep 3 00:00:00 CEST 2017

哪个好,但是这个:

for i in {0..$a}
do 
cur_date=`date -d $start_date" "$i" days"`
echo $cur_date
done

结果:

date: invalid date ‘2017-09-01 {0..3} days’

虽然这个:

for i in {0..3}
do 
cur_date=`date -d $start_date" "$i" days"`
echo $cur_date
done

返回正确的序列 所以,问题是,为什么使用具有相同值而不是just值的变量会破坏代码?

由于

0 个答案:

没有答案