Bash
printfを使って日付を避ける
サーチ…
前書き
Bash 4.2では、 printf
シェル組み込み時間変換が導入されました。フォーマット指定%(datefmt)T
は、 printf
出力に、 strftime
理解するフォーマット文字列datefmt
対応する日付 - 時刻文字列を出力させます。
構文
- printf '%(dateFmt)T'#dateFmtには、strftimeが認識する任意の書式文字列を指定できます
- printf '%(dateFmt)T' -1#-1は現在の時刻を表します(引数がない場合のデフォルト)
- printf '%(dateFmt)T' -2#-2は、シェルが呼び出された時刻を表します
備考
printf -v foo '%(...)T'
を使ってprintf -v foo '%(...)T'
はfoo=$(date +'...')
と同じで、外部プログラムのdate
への呼び出しのためにforkを保存しdate
。
現在の日付を取得する
$ printf '%(%F)T\n'
2016-08-17
変数を現在の時刻に設定する
$ printf -v now '%(%T)T'
$ echo "$now"
12:42:47
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow