# 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 +%M
50になり、5を除くと45になり、55を除くと-5になるからでしょう。
12時に最初のスコアも-5になります。
12:07に12:2
代わりが表示され、12:09に一部のシェルは有効な8進数ではないと12:02
文句を言います。09
5分前の時間を得るために分フィールドから5を引くことは不可能です。たとえば、いつJan 1 00:00
あなたに与えなければならないかを考えてみてくださいDec 31 23:55
。
perl
Solarisで日付を計算するには、またはいずれかを使用できますが、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とは異なり)。ksh
sh
sh
今ksh93によって実装され、将来変更される可能性があり、標準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 のサポートも追加されており、%s
bash の最新バージョンです.)
私たちはより多くの言語を蓄積していますが、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)))'