Bash - 年月日ループ!

Updated:


シェルスクリプト(Bash)で年月日でループ処理を行ってみました。(日付の妥当性をチェックしなくてもよい方法)

0. 前提条件

  • Debian GNU/Linux 10.10 (64bit) での作業を想定。
  • GNU bash 5.0.3 での作業を想定。

1. Bash スクリプトの作成

以下は、作成例。(Example-1 or Example-2 どちらか)

  • date コマンドで「1日後」を指定しながらループしているので、日付の妥当性をチェックしなくてもよい。

File: date_loop.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
DATE_S="20201226"
DATE_E="20210105"

# Example-1
for (( dt=$DATE_S ; $dt < $DATE_E ; dt=`date -d "$dt 1 day" '+%Y%m%d'` )) ; do
  echo $dt
done

echo "---"

# Example-2
dt=$DATE_S
while [[ $dt < $DATE_E ]] ; do
  echo $dt
  dt=`date -d "$dt 1 day" '+%Y%m%d'`
done

2. Bash スクリプトの実行

$ ./date_loop.sh
20201226
20201227
20201228
20201229
20201230
20201231
20210101
20210102
20210103
20210104
---
20201226
20201227
20201228
20201229
20201230
20201231
20210101
20210102
20210103
20210104

何かと応用が効くでしょう。

以上。





 

Sponsored Link

 

Comments