Solaris 11の日付表示

Solaris 11の日付表示
# date +"%b %d %H:$(( $(date +'%M')-5))"
Nov 20 12:45
date +"%b %d %H:$(( $(date +'%M')-55))"
Nov 20 12:-5

私はなぜここに来るべきですか-5?修正するには?助けてください。

ベストアンサー1

おそらく12時50分に実行するとdate +%M50になり、5を除くと45になり、55を除くと-5になるからでしょう。

12時に最初のスコアも-5になります。

12:07に12:2代わりが表示され、12:09に一部のシェルは有効な8進数ではないと12:02文句を言います。095分前の時間を得るために分フィールドから5を引くことは不可能です。たとえば、いつJan 1 00:00あなたに与えなければならないかを考えてみてくださいDec 31 23:55

perlSolarisで日付を計算するには、またはいずれかを使用できますが、zsh後者が常にデフォルトでインストールされるわけではありません。 5分前の時間を得るには:

perl -MPOSIX -le 'print strftime("%b %d %R", localtime(time - 5*60))'

または:

zsh -c 'zmodload zsh/datetime; strftime "%b %d %R" $((EPOCHSECONDS - 5*60))'

実際にはSolaris 11バージョンから/bin/sh実際にはksh93なので、そこでも/bin/ksh使用できます(好ましくはwhileとは異なり)。kshshshksh93によって実装され、将来変更される可能性があり、標準sh言語にはこれらの機能はありません。)

ksh -c 'printf "%(%b %d %R)T\n" "5 minutes ago"'

@glennjackmanがコメントで指摘したように、すでにインストールされているbash場合は、次のこともできます。

bash -c 'printf -v t "%(%s)T" -1 && printf "%(%b %d %R)T\n" "$((t - 5*60))"'

(Solaris バージョン 11 には bash のサポートも追加されており、%sbash の最新バージョンです.)

私たちはより多くの言語を蓄積していますが、TCL通訳者がいる場合は次のようになりますexpect

expect -c 'puts [clock format [
  clock add [clock seconds] -5 minute] -format "%b %d %R"]'

またはpython3:

python3 -c 'import time; print(time.strftime("%b %d %R", time.localtime(time.time() - 5*60)))'

おすすめ記事