2012-06-13 3 views
5

Ok, questa è probabilmente una domanda molto semplice; ma, sto solo tornando in sella con Linux.Ottenere data leggibile da Epoch in variabile

Ho una variabile che contiene un tempo Epoch chiamato pauseTime. Ho bisogno che quella variabile diventi leggibile dall'uomo (qualcosa come 2012-06-13 13:48:30).

So che posso semplicemente digitare

date -d @133986838 //just a random number there 

e che stamperanno qualcosa di simile. Ma ho bisogno di ottenere la variabile per contenere quella data leggibile dall'uomo, invece del tempo dell'epoca ... Continuo a incorrere in errori con tutto ciò che sto provando. Qualche idea su come posso farlo?

risposta

7

Bene fare questo:

VARIABLENAME=$(date -d @133986838) 

e poi

export VARIABLENAME 

o in Bash fare direttamente:

export VARIABLENAME=$(date -d @133986838) 

se si vuole la formattazione, dicono nel consueto formato ISO:

export ISODATE=$(date -d @133986838 +"%Y-%m-%d %H:%M:%S") 
# or 
EPOCHDATE=133986838 
export ISODATE=$(date -d @$EPOCHDATE +"%Y-%m-%d %H:%M:%S") 

I formati dietro + sono spiegati in man date.

Nota: $() è la forma moderna dei backtick. Cioè catturare l'output da un comando in una variabile. Tuttavia, $() rende alcune cose più semplici, in particolare le regole di escape al suo interno. Quindi dovresti sempre preferirlo ai backtick se il tuo shell lo capisce.

+0

Grazie, ho provato qualcosa di simile ... Ma seguendo il tuo ho capito che non ho mai eliminato la variabile alla fine del mio ciclo. Causandolo per errore sul prossimo passaggio. Grazie, questo risolve il mio problema. – W3BGUY

+1

perché stai raccomandando di esportare la variabile? – jordanm

+0

Perché stai esportando la variabile. Sono quasi sicuro che non sia necessario. È necessario che un processo figlio lo veda? Questa sarebbe l'unica ragione per farlo. Alcune persone lo fanno abitualmente e non dovrebbero farlo. –