BusyBox date を触る

2021/07/20

date コマンドで実行しているスクリプトがあって
Alpine Linux の環境で動かすと期待度通りに動いてくれなかった

そもそも date コマンドには 3 つあるみたい

  • BSD date
  • GNU coreutils date
  • BusyBox date

2021/07/16 の記事では BSD date と GNU coreutils date について書いたが、今回は BusyBox date を簡単に触る

Docker で Alpine Linux を触る

$ docker run -it alpine:latest /bin/sh

date コマンドを見てみる

# date --help
BusyBox v1.33.1 () multi-call binary.
...

もちろん BSD date や GNU coreutils date で使える日付操作のオプションが使えない

# date '+%Y-%m-%d' -d '1 day ago'
date: invalid date '1 day ago'

# date '+%Y-%m-%d' -v -1d
date: unrecognized option: v
...

日付計算で出力する必要がある

# date '+%Y-%m-%d' -d "1970.01.01-00:00:$(( $( date +%s ) - $(( 24 * 60 * 60 )) ))"
2021-07-19

月末の日を求めたかったが計算がややこしくなりそうだったので BusyBox date を使わない別の方法を考えることにした


Profile picture

Written by @honyanya web developer.
Twitter

© 2022. @honyanya