0 votos

¿Cómo obtener la misma fecha y hora en dos formatos en la línea de comandos?

Tengo el siguiente código

DATETIME=$(date '+%F %T') 
GIT_TAG_DATETIME=$(date '+%Y%m%d-%H%M%S' --date="$DATETIME")

para asignar la misma fecha y hora en dos variables en diferentes formatos. Funciona en Linux, pero falla en Macos con

date: formato de hora no permitido
uso: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

El problema puede depender del locale, el mío es

% echo $DATETIME
2022-04-25 13:58:50
% locale
LANG=""
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

1 votos

Primero, no creo que funcione en Linux como quieres - ¿por qué has utilizado un formateador de día del mes en lugar de un formateador de hora en '%Y%m%d-%D%H%S' y también espacios alrededor del =. Por favor, edita el código para que sea EXACTAMENTE lo que intentaste

0 votos

Es un error tipográfico al publicar.

2voto

yoliho Puntos 340

El problema aquí es que GNU/Linux utiliza el ejecutable de fecha de GNU y macOS utiliza el de BSD. Toman argumentos diferentes.

Consulte man date para ver los argumentos correctos.

Creo que quieres

DATETIME=$(date '+%F %T')
GIT_TAG_DATETIME=$(date -j -f '%Y-%m-%d %H:%M:%S'  "$DATETIME")

obteniendo

% echo $DATETIME
2022-04-25 12:50:04

% echo $GIT_TAG_DATETIME
Mon 25 Apr 2022 12:50:04 BST

0 votos

¡Pero esto no funciona en Linux! ¿Cómo escribir de forma portable?

1 votos

@Dims Verifique si está ejecutando en macOS o Linux y luego use los comandos apropiados.

1 votos

Creo que la respuesta final es date -j -f '%Y-%m-%d %H:%M:%S' "$DATETIME" '+%Y%m%d-%H%M%S' y también cometiste un error tipográfico (%I)?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X