Mon Jan 1 23:59:59 2018 GMT
私はビジボックスツールへのアクセスがほとんど制限されている環境で作業しており、シェルスクリプトで日付形式をUnixタイムスタンプに変換したいと思います。解析される入力時間の形式を変更できません。busybox date
この日付形式や指定された月の他の形式を理解できないようです。私はこれを行う本当に醜いスクリプトを持っていますが、より良いスクリプトを知っている人はいますか?
編集:そのdate -D
オプションは私には適していませんでした。調べました。
date: invalid option -- 'D'
BusyBox v1.24.1 (2018-01-11 16:07:45 PST) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]`
答え1
busybox date
2はいくつかの助けを借りて、与えられた文字列1(GMTタイムゾーンを除く)の日付を完全に解析できます。
$ gdate='Mon Jan 1 23:59:59 2018 GMT'
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z'
Mon Jan 1 23:59:59 GMT 2018
ヘルプは-D
ソース形式の説明オプションで提供されます。
UNIXタイムスタンプを取得するには、予想される出力形式を追加するだけです+'%s'
。
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' +'%s'
1514851199
1
busyboxには、date
GNUコマンドのほとんどの機能date
とdate
GNUコマンドにない機能の1つである-D
オプションがあります。次のようにbusyboxのヘルプを入手してください。
$ busybox date --help
BusyBox v1.27.2(Debian 1:1.27.2-2)マルチコールバイナリ。
使用法:日付[オプション] [+FMT] [時間]
時間表示(+FMTを使用)または時間設定
[-s,--set] TIME Set time to TIME -u,--utc Work in UTC (don't convert to local time) -R,--rfc-2822 Output RFC-2822 compliant date string -I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision -r,--reference FILE Display last modification time of FILE -d,--date TIME Display TIME, not 'now' -D FMT Use FMT for -d TIME conversion
-D FMT
このオプションに注意してください。
2次の
2つの方法でbusyboxを呼び出すことができますdate
。
$ busybox date
busybox
または、その名前のリンクがdate
すでに正しいディレクトリにインストールされている場合PATH
:
$ date
確認するには、インストール日を尋ねるか調べてください --version
。--help
GNUの使用date
:
$ date --version
date (GNU coreutils) 8.28
または(Busybox date
):
$ date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary.
…
…