world scripts script hello example basics shell date unix format solaris

shell - scripts - linux sh script example



ManipulaciĆ³n de fecha YYYYMMDDHH en script de shell en Unix (2)

Debe verificar si gdate no está instalado en su versión de Solaris (podría estar en /usr/gnu/bin/date , /usr/sfw/bin/[g]date , /usr/local/bin/[g]date , /usr/csw/bin/[g]date o simplemente /usr/bin/gdate dependiendo de la versión). De lo contrario, debería ser fácil encontrar un paquete que contenga la fecha GNU e instalarlo.

De todos modos, aquí hay una función de shell que solo debería funcionar en una versión estándar de Solaris y que haga lo que yo crea que quiera:

f() { echo $1 | perl -MTime::Local -nle '' use POSIX ''strftime''; $op=''$2''*3600; $sec=timelocal(0,0,$4,$3,$2-1,$1) if /(/d{4})(/d{2})(/d{2})(/d{2})/; $sec=$sec+$op; print strftime "%Y%m%d%H/n", localtime($sec);'' }

$ f 2014010112 -24 2013123112

Esta pregunta ya tiene una respuesta aquí:

Tengo una fecha en formato "AAAAMMDDHH" y quiero agregar o restar horas de ella. La fecha GNU (fecha -d opción) funciona como un amuleto en Linux pero no puede hacer esto en entornos no GNU como Solaris. ¿Puede alguien ayudarme en cómo puedo hacer esto?


Solo para que en caso de que alguien aterrice aquí buscando respuesta a la pregunta anterior "fecha no de GNU": la siguiente pregunta es más apropiada con buenas respuestas: cálculos de fecha sin herramientas de GNU