bash - tutorial - shell scripting pdf




Fecha de formato YYYY-MM-DD en script de shell (7)

Cada vez que tengo una tarea como esta termino volviendo a

$ man strftime

Para recordarme todas las posibilidades.

Intenté usar $(date) en mi script de shell bash, sin embargo quiero la fecha en formato AAAA-MM-DD. ¿Cómo consigo esto?


Con Bash reciente (versión ≥ 4.2), puede usar el printf integrado con el modificador de formato %(strftime_format)T :

$ printf '%(%Y-%m-%d)T\n' -1  # Get YYYY-MM-DD (-1 stands for "current time")
2017-11-10
$ printf '%(%F)T\n' -1  # Synonym of the above
2017-11-10
$ printf -v date '%(%F)T' -1  # Capture as var $date

Está buscando el formato de fecha estándar ISO 8601 , así que si tiene la fecha de GNU (o cualquier comando de fecha más moderno que 1988), simplemente haga lo siguiente: $(date -I)


Prueba: $(date +%F)


Si desea el año en un formato de dos números, como 17 en lugar de 2017, haga lo siguiente:

DATE=`date +%d-%m-%y`

#!/bin/bash -e

x='2018-01-18 10:00:00'
a=$(date -d "$x")
b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S")
c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S")
#date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S"

echo Entered Date is $x
echo Second Date is $b
echo Third Date is $c

Aquí x es la fecha de muestra utilizada y luego el ejemplo muestra tanto el formato de los datos como la obtención de fechas 10 minutos más que la fecha actual.


date -d '1 hour ago' '+%Y-%m-%d'

La salida sería 2015-06-14 .







scripting