GNU/Linux >> Tutoriales Linux >  >> Linux

Bash - Comando de fecha y espacio

El enfoque correcto es definir su propia función dentro de su script Bash.

function my_date {
  date "+%y-%m-%d %H:%M:%S"
}

Ahora puedes usar my_date como si fuera un programa externo.

Por ejemplo:

echo "It is now $(my_date)."

O simplemente:

my_date

¿Por qué no funciona su enfoque?

El primer problema es que tu tarea está rota.

DATE_COMMAND="date "+%y-%m-%d %H:%M:%S""

Esto se analiza como una asignación de la cadena date +%y-%m-%d a la variable DATE_COMMAND . Después del espacio en blanco, el caparazón comienza a interpretar los símbolos restantes de maneras que no pretendías.

Esto podría arreglarse parcialmente cambiando la cotización.

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"

Sin embargo, esto realmente no resuelve el problema porque si ahora usamos

echo $($DATE_COMMAND)

No ampliará el argumento correctamente. El date el programa verá los argumentos '+%y-%m-%d y %H:%M:%S' (con comillas) en lugar de una sola cadena. Esto podría resolverse usando eval como en

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"
echo $(eval $DATE_COMMAND)

donde la variable DATE_COMMAND primero se expande a la cadena date '+%y-%m-%d %H:%M:%S' eso es entonces eval uado como si estuviera escrito así invocando así date correctamente.

Tenga en cuenta que solo estoy mostrando esto para explicar el problema. eval no es una buena solución aquí. Utilice una función en su lugar.

PD:es mejor evitar las cadenas de identificadores en mayúsculas, ya que a menudo entran en conflicto con las variables de entorno o incluso tienen un significado mágico para el shell.


Escapar del espacio funciona para mí.

echo `date +%d.%m.%Y\ %R.%S.%3N` 

Linux
  1. Establezca la fecha y la hora para cada comando que ejecute en el historial de Bash

  2. ¿Se permite espacio entre #! ¿Y /bin/bash en Shebang?

  3. comando de exportación bash

  4. Comparación de fechas en Bash

  5. ¿Cuál es la diferencia entre &> y >&en bash?

Comando de fuente Bash

Comando de historial en Linux (Bash History)

Comando de salida de Bash y códigos de salida

Comando Bash printf

Cómo usar el comando de fecha en Bash Scripting en Linux

Script Bash (II)