Bashシェルスクリプトで年、月、日を1コマンドでそれぞれの変数に分割

2021-02-15Bash

はじめに

プログラミングで年月日の値を利用することは多いです。
僕も何度日時を操作するプログラムを記述したか。

Bashシェルスクリプトで年月日を分割取得するちょっとかわった方法を紹介します。

よく使われる方法

すぐに思いつくのは、 date コマンドを3回叩いて年、月、日の値をそれぞれ別の変数に代入するという方法です。

$ year=$(date +%Y)
$ month=$(date +%m)
$ date=$(date +%d)

1コマンドでそれぞれの変数に分割する方法

別の方法として、 set コマンドを使って一度に分割し、それぞれの変数を用意することができます。

$ set -- $(date '+%Y %m %d')

# 年を表示
$ echo $1
2013

# 月を表示
$ echo $2
04

# 日を表示
$ echo $3
16

ひとこと

1コマンドで別変数に代入する方法は簡潔ではありますが、注意が必要です。

$1$2$3 という変数に代入されるため、コマンドライン引数が上書きされてしまいます。

2021-02-15Bash