8

1 年のすべての日で文字列を生成する必要があります

元:

MIN_DATE=01.01.2012

MAX_DATE=31.12.2012

for date in {1...366..1}
 do
 echo ...
done
4

3 に答える 3

12
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done
于 2012-08-24T10:25:15.903 に答える
2

純粋な bash ソリューションではありませんが、私のdateutilsが役立ちます。

dseq 01.01.2012 31.12.2012 -f %d.%m.%Y -i %d.%m.%Y
=>
  01.01.2012
  02.01.2012
  ...
  31.12.2012

-f出力形式は で、入力形式は で設定できます-i

于 2012-08-24T12:43:22.767 に答える
1

ISO 8601 日付形式 (年-月-日) を使用すると、日付を辞書順に比較できます。bash文字列用の「<=」演算子がないため、私が望むよりも少し面倒です。

year=2011
d="$year-01-01"
last="$(($year+1))-01-01"
while [[ $d < $last ]]; do
    echo $d
    d=$(date +%F --date "$d + 1 day")
done
于 2012-08-24T12:47:37.650 に答える