Em um script de shell, existem as seguintes variáveis:
datestamp=$(date '+%Y-%m-%d_T%H-%M-%S')
datestamp_pretty=$(date '+%m/%d/%Y at %I:%M:%S %p')
O primeiro é usado como parte do nome do arquivo de saída, enquanto o segundo é usado para exibir uma data e hora legíveis no conteúdo do arquivo. Uma vez que estes são criados separadamente, os segundos podem estar ligeiramente desligados. Existe uma maneira de criar uma única variável de data e formatá-la de duas maneiras diferentes? Se sim, como isso é feito?
Isso é muito fácil se você estiver usando GNU
date
.Primeiro, obtenha o formato de hora mais genérico de
date
. Eu escolhi obter o tempo de época:Em seguida, converta a época para o formato desejado quantas vezes desejar:
Deve sempre representar o momento em que você capturou pela primeira vez
$epoch
.Se você não tiver GNU
date
, precisará de algum outro método para converter a época em uma data humana.Aqui está uma maneira de fazer isso que não requer GNU
date
e não requer que você executedate
mais de uma vez.Escolha uma string que nunca aparecerá em nenhuma das strings de data/hora. Pode ser um único caractere — por exemplo,
~
,^
e|
tudo funcionaria. Mas vou demonstrar com/foo/
.Basta concatenar seus formatos de string de data com a string escolhida entre eles. (Remova o
+
do segundo formato.) Capture a saída dedate
em uma variável e, em seguida, divida-a em sua string delimitadora: