2016-03-19 4 views
1

I Problem haben, das Format für Datum wie date +%y%j.%H%M%S verwendet,hinzufügen Min in vorhandenen benutzerdefinierten Datumsformat über Shell

Und was ich will ist 15 Minuten auf dem zu diesem Zeitpunkt hinzufügen auf nur auf das aktuelle Datum des Systems. damit ich für die weitere Berechnung in meinen Prozess eingreifen kann.

Ich habe mit folgendem Code versucht -

$uprBond=`date +%y%j.%H%M%S` 
$ echo $uprBond 
16079.031135 
$ date -d "$(uprBond) + 5 minutes" +%y%j.%H%M%S 

op> bash: uprBond: Befehl nicht

16079,035920

ich versagt habe, während das Bestehen das oben Datumsformat gefunden, Kann mir bitte jemand helfen.

Nur zur Kenntnisnahme, unten ist das Stück Code funktioniert, wenn ich Datumsfunktion anstelle der definierten Datumsvariable verwendet, dh $ uprBond (Ich möchte nicht vordefinierte Datum verwenden, weil wir einige alte gleich formatierte Datum haben, die benötigt das Hinzufügen von Minuten).

date +%y%j.%H%M%S -d "`date` + 5 minutes"; 

op> 16079,040724

Antwort

2

Mit GNU Datum, GNU bash 4 und seine Parameter Expansion:

#!/bin/bash 

uprBond="$(date +%y%j.%H%M%S)" 

year="20${uprBond:0:2}"     
doy="${uprBond#${uprBond:0:2}}" 
doy="${doy%.*}"       
time="${uprBond#*.}" 
time="${time:0:2}:${time:2:2}:${time:4:2}" 
in5min=$(date -d "${year}-01-01 +${doy} days -1 day +5 minutes ${time}" "+%y%j.%H%M%S") 

echo "now:  $uprBond" 
echo "in 5min: $in5min" 

Ausgang:

 
now:  16079.145026 
in 5min: 16079.145526