![]() |
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| UNIX for Dummies Preguntas y Respuestas Si no está seguro de que para publicar un UNIX o Linux cuestión, puesto que aquí. Todos los novatos en Linux, UNIX y bienvenida! |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Comparar fecha a partir de la tabla para db2 ayer la fecha del sistema Unix | sasaliasim | Programación de scripts de shell y | 9 | 12-01-2008 11:37 PM |
| Obtener la fecha y la hora en el pasado 1 hora desde la fecha actual | spch2o | Programación de scripts de shell y | 5 | 08-29-2008 05:32 AM |
| Procesamiento de un archivo de registro basado en la fecha y la hora de entrada y la fecha / hora en el archivo de registro | primp | Programación de scripts de shell y | 4 | 03-16-2008 11:23 AM |
| comparar fecha con la fecha en el expediente | siog | UNIX for Dummies Preguntas y Respuestas | 2 | 10-04-2006 01:10 PM |
| comparar la fecha de hoy con la fecha en un archivo | siog | UNIX for Dummies Preguntas y Respuestas | 4 | 10-04-2006 12:55 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Comparar fecha y hora
Hola
¿Puede alguien me envíe el código para comparar dos fecha y ejecutar un script de shell. siguiente es el código que me actully quiere pero yo estoy recibiendo errores. considerar Jamil . / opt / home / REP / .profile #! / bin / sh VALUE \u003d `sqlplus-silent rep/Ndk38f7 @ dw <<END conjunto pageSize 0 comentarios fuera de comprobar fuera de irse echo off Tronco seleccionar (max (chg_dt)) de NOT_SCHEDULED_INSTALL; salida; FIN » VALUE2 \u003d `sqlplus-silent rep/Ndk38f7 @ dw <<END conjunto pageSize 0 comentarios fuera de comprobar fuera de irse echo off Seleccione trunc (sysdate) from dual; salida; Fin » if [[$ valor-eq $ valor2]], y luego echo "n filas resultado de la base de datos" exit 0 algo más echo $ VALUE2 echo $ valor fi |
|
||||
|
Oracle ya tiene fecha de aritmética, ksh no - Uso de PL / SQL: Código:
#!/bin/ksh
date_equal()
{
sqlplus -silent rep/Ndk38f7@dw <<END
set pagesize 0 feedback off verify off heading off echo off serverout on size 100000
DECLARE
date1 DATE:=NULL;
date2 DATE:=NULL;
BEGIN
DBMS_OUTPUT.enable(100000);
select trunc(max(chg_dt)) into date1 from NOT_SCHEDULED_INSTALL;
select trunc(sysdate) into date2 from dual;
IF date1 = date2
THEN
DBMS_OUTPUT.put_line('1');
ELSE
DBMS_OUTPUT.put_line('0');
END IF;
END;
/
exit;
END
}
if [[ $(date_equal) -eq 1 ]] ; then
# do something
else
# do something else
fi
|
|
||||
|
fecha y hora problema
Gracias por su respuesta.
El problema es que no funcionan correctamente, siempre print 'no puede' if [[$ (date_equal)-eq 1]], y luego ok echo '' algo más echo 'no puede' fi gracias |
|
||||
|
Y ahora algo diferente
He usado antes y funciona bastante bien.
Hace un par de cosas diferentes con las fechas en función de los parámetros. #! / usr / bin / ksh # Datecalc - fecha Perderabo la calculadora # USO \u003d "\ datecalc-un año mes día - año mes día datecalc-un año mes día [-|+] n -d datecalc año mes día -D datecalc año mes día -j datecalc año mes día datecalc-jn datecalc-l año mes uso \ "datecalc de ayuda \" para usar más la documentación " DOCUMENTACIÓN \u003d "\ Versión datecalc 1,1 manipulaciones datecalc hace muchas fechas. datecalc-A es la fecha para la aritmética datecalc-D-D o convierte una fecha para el día de la semana datecalc-j convierte al día o de día juliano datecalc-l envía el último día de un mes Todas las fechas deben estar entre los años 1860 y 3999. datecalc un seguido de 7 parámetros calculará la número de días entre dos fechas. Los parámetros 2-4 y 6-8 deben ser las fechas en forma de amd, y 5 parámetro debe ser un signo menos signo. El resultado es un entero. Ejemplo: > Datecalc a un 1960 12 31 - 1922 2 2 14212 datecalc un seguido de 5 parámetros, el cálculo de la una nueva fecha de desplazamiento desde una fecha determinada, los parámetros deben 2-4 ser una fecha en forma ymd, Parámetro 5 debe ser + o -, y Parámetro 6 debe ser un entero. La salida es una nueva fecha. Ejemplo: > Datecalc a un 1960 12 31 + 7 1961 1 7 datecalc-D seguido por 3 parámetros convertir una fecha a un día de la semana. Parámetros de 2-4 debe ser una fecha en ymd forma. Ejemplo: > Datecalc-D 1960 12 31 6 datecalc-D es como el d-excepto que muestra el nombre de del día. Ejemplo: > Datecalc-D 1960 12 31 Sábado datecalc-j seguido por 3 parámetros convertir una fecha a Julian Modificado número del día. Ejemplo: > Datecalc-J 1960 12 31 37299 datecalc-j seguida por un único parámetro se convertirá un número Julian Modificado de un día a una fecha. Ejemplo: > Datecalc-J 37299 1960 12 31 datecalc-l seguido por año y mes es la salida de la última día de ese mes. Tenga en cuenta que al marcar el último día de Febrero puede probar para el año bisiesto. Ejemplo: > Datecalc-l 2002 2 28 " lastday () ( entero mes, año bisiesto # Ja Fe ma ma AP Jn JL AG SE OC no de set-a XX mlength 31 28 31 30 31 30 31 31 30 31 30 31 año \u003d $ 1 if ((year <1860 | | Año> 3999)), luego print-u2 años fuera de rango return 1 fi mes \u003d $ 2 if ((mes <1 | | mes> 12)), y luego print-u2 meses fuera de rango return 1 fi if ((mes! \u003d 2)), y luego print $ (mlength [mes]) return 0 fi salto \u003d 0 if ((! (año% 100))) y, a continuación, ((! (año% 400))) & & salto \u003d 1 algo más ((! (año% 4))) & & salto \u003d 1 fi feblength \u003d 28 ((salto)) & & feblength \u003d 29 print $ feblength return 0 ) date2jd () ( entero IJD día mes año mnjd JD Lday año \u003d $ 1 mes \u003d $ 2 días \u003d $ 3 Lday \u003d $ ($ lastday año $ mes) | | exit $? if ((día <1 | | dia> Lday)), y luego print-u2 días fuera de rango return 1 fi ((\u003d día standard_jd - 32075 + 1461 * (año + 4800 - (14 - mes) / 12) / 4 + 367 * (mes - 2 + (14 - mes) / 12 * 12) / 12 - 3 * ((años + 4900 - (14 - mes) / 12) / 100) / 4)) ((\u003d standard_jd JD-2400001)) print $ jd return 0 ) jd2dow () ( entero numeric_mode Dow JD SET + Un día Domingo Lunes Martes Miércoles Jueves Viernes Sábado Domingo numeric_mode \u003d 0 if [[$ 1 \u003d-n]], y luego numeric_mode \u003d 1 turno fi JD \u003d $ 1 if ((JD <1 | | JD> 782028)), luego print-u2 día juliano fuera de rango return 1 fi ((dow \u003d (JD +3)% 7)) if ((numeric_mode)), y luego print $ Dow algo más print $ (día [Dow]) fi volver ) jd2date () ( entero standard_jd temp1 temp2 JD día mes año JD \u003d $ 1 if ((JD <1 | | JD> 782028)), luego días de impresión Julian fuera de rango return 1 fi ((standard_jd \u003d JD 2.400.001)) ((temp1 \u003d standard_jd + 68569)) ((temp2 \u003d 4 * temp1/146097)) ((temp1 \u003d temp1 - (146097 * temp2 + 3) / 4)) ((year \u003d 4000 * (temp1 + 1) / 1461001)) ((temp1 \u003d temp1 - 1461 * año / 4 + 31)) ((mes \u003d 80 * temp1 / 2447)) ((día \u003d temp1 - 2447 * mes / 80)) ((temp1 \u003d mes / 11)) ((mes \u003d mes + 2 - 12 * temp1)) ((año \u003d 100 * (temp2 - 49) + año + temp1)) print $ $ $ año, mes día return 0 ) # # Parámetros Parse y ponerse a trabajar. $ 1 en caso -a) if (($ # \u003d\u003d 8)), luego if [[$ 5! \u003d -]], y luego print-u2 - "$ uso" salida 1 fi JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? JD2 \u003d $ (date2jd $ 6 $ 7 $ 8) | | exit $? ((JD3 \u003d JD1-JD2)) print $ JD3 exit 0 elif (($ # \u003d\u003d 6)), y luego JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? $ 5 en el caso - | +) Eval '((' JD2 \u003d $ (JD1) $ (5) $ (6 }'))' jd2date $ JD2 exit $? ;; *) print-u2 - "$ uso" salida 1 ;; esac fi ;; -d |-D) if (($ #! \u003d 4)), y luego print-u2 - "$ uso" salida 1 fi JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $? n \u003d- numérico [[$ 1 \u003d-D]] & & numérica \u003d "" jd2dow eval $ $ numéricos JD1 exit $? ;; -j) if (($ # \u003d\u003d 4)), y luego date2jd $ 2 $ 3 $ 4 exit $? elif (($ # \u003d\u003d 2)), y luego jd2date $ 2 $ 3 $ 4 exit $? algo más print-u2 - "$ uso" salida 1 fi ;; -l) if (($ # \u003d\u003d 3)), y luego lastday $ 2 $ 3 exit $? algo más print-u2 - "$ uso" salida 1 fi ;; USO-ayuda) print - "$" print "" print - "$ DOCUMENTACIÓN" exit 0 ;; *) Print-u2 - "$ uso" exit 0 ;; esac # no alcanzó salida 7 |
|
||||
|
Otra forma sería: Código:
#!/usr/bin/ksh RET=`sqlplus -silent rep/Ndk38f7@dw <<END set pagesize 0 feedback off verify off heading off echo off select decode(d1,d2,'No rows',to_char(d1)||' '||to_char(d2)) from (select trunc(max(chg_dt)) d1 from NOT_SCHEDULED_INSTALL), (select trunc(sysdate) d2 from dual); exit; END` if [[ "$RET" = "No rows" ]] ; then # do something else # do something else fi Deje que la decodificación de la función de oráculos compara para usted. |
|
||||
|
unix script
Necesito un pequeño cambio en este script.
Lo que necesito cuando la fecha es menos de sysdate que dormir por 1 houre de lo contrario, ejecutar mi script abc.sh. gracias Jamil |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|