601 votes

Créer une variable d'horodatage dans le script bash

Je suis en train de créer un timestamp variable dans un script shell pour faire de l'enregistrement un peu plus facile. Je veux créer la variable au début du script et imprimer l'heure actuelle chaque fois que j'en question, echo $timestamp. Il s'avère être plus difficile que je ne le pensais. Voici certaines choses que j'ai essayé:

timestamp="(date +"%T")" echo imprime (date +"%T")

timestamp="$(date +"%T")" echo imprime le moment où la variable a été initialisée.

D'autres choses que j'ai essayé sont juste de légères variations qui ne fonctionnait pas mieux. Personne ne sait comment accomplir ce que je suis en train de faire?

783voto

dchakarov Points 560

Si vous voulez obtenir un timestamp Unix, vous devez utiliser:

 timestamp=$(date +%s)
 

%T vous donnera juste le temps; identique à %H:%M:%S (via http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ )

428voto

giordano Points 1289

Afin d'obtenir le timestamp actuel et pas le temps de lorsqu'une variable est définie, l'astuce est d'utiliser une fonction et non une variable:

#!/bin/bash

# Define a timestamp function
timestamp() {
  date +"%T"
}

# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...

Si vous n'aimez pas le format donné par l' %T rédacteur de devis, vous pouvez combiner les autres temps de conversion les spécificateurs accepté par date. Pour GNU date, vous pouvez trouver la liste complète de ces prescripteurs dans la documentation officielle ici: https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers

21voto

choroba Points 56333

Utiliser la substitution de commande :

15voto

Bill Points 1

pouvez utiliser timestamp =``

  • Cela a été testé sous Ubuntu 12.04 ce livre au format 2014-02-01 15:12:35-05:00 date--aide a autres options et le backtick ' caractères fera ce qui est entre eux pour être evakuated et avoir le résultat figurant dans la ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X