The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
[C] fgets problema con SIGINT singlal! hurricane86 Programación de Alto Nivel 1 01-02-2009 12:04 PM
Pasando la variable de bash para bash script de perl arsidh Programación de scripts de shell y 10 06-04-2008 01:25 PM
Problema con la manipulación de SIGINT JamesGoh Programación de Alto Nivel 3 02-24-2008 10:39 PM
SIGINT de captura no puede romper, mientras que la condición se produce en serie gzz Programación de Alto Nivel 13 11-23-2007 08:06 AM
AIX interceptar llamadas al sistema ramkumar.pvs AIX 2 09-29-2006 03:17 AM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 07-01-2009
Starcast Starcast is offline
Usuario Registrado
  
 

Fecha: enero 2009
Ubicación: Minneapolis, MN
Publicaciones: 13
Interceptar SIGINT en un script bash

He escrito un script bash que captura vídeo con DVgrab. Debido a la naturaleza de las cintas que estoy de digitalización, a veces quiero dejar de fumar antes de capturar el momento en que he configurado para DVgrab. En este caso me presione Ctrl-c y DVgrab salidas limpiamente, mi problema es que hay información adicional que el script se imprime en la terminal con 'echo' cuando el script se ejecuta hasta que la hora fijada. Cuando Ctrl-c nada de esto se imprime la información ...

¿Hay alguna forma de interceptar la SIGINT (creo que esto es lo que quiero, pero podría estar equivocado) y tienen que funcionar exactamente como lo hace por defecto, pero, además, eco de algunas varibles en la terminal?

Preferentemente me gustaría hacer esto en mi script ... y no afectará a la forma Ctrl-c funciones en todo el sistema.

No está seguro de si es importante, pero sobre la base de mi lectura con anterioridad a este cargo que no estaba seguro, pero yo ejecutar este script en una terminal virtual en un gnome en Ubuntu (8.10) Linux

El poco que quería añadir Ctrl-c cuando se pulsa tiene este aspecto:


Código:
echo -e "\E[31;40m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+               Warning - Capture Ended Early                           +"
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo -e "\E[30;47m++ Format: $FORMAT    ++ Min Remaing on $destination : $minremain    "
echo "++ Deck: $deck_number          ++ Customer: $customer      " 
echo "++ Rec Time: $tape_length  ++ Tape: $tapename"

Gracias de antemano!
-Starcast
  #2 (Enlace permanente)  
Old 07-01-2009
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Fecha: febrero 2004
Ubicación: NM
Mensajes: 5.807

Código:
#!/bin/bash
trap 'echo "Control-C disabled." ' 2
... your code here.

  #3 (Enlace permanente)  
Old 07-01-2009
Starcast Starcast is offline
Usuario Registrado
  
 

Fecha: enero 2009
Ubicación: Minneapolis, MN
Publicaciones: 13
Terminé haciendo este aspecto, pero le dio lo que necesitaba para llegar, gracias.


Código:
#!/bin/bash
trap 'echo -e "\E[31;40m\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n
+                   WARNING - Early Exit                         +\n
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\E[30;47m\n
++ Format: $FORMAT    ++ Min Remaing on $destination : $minremain    \n
++ Deck: $deck_number          ++ Customer: $customer      \n
++ Rec Time: $tape_length  ++ Tape: $tapename"' 0

-Starcast
  #4 (Enlace permanente)  
Old 07-01-2009
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Fecha: febrero 2004
Ubicación: NM
Mensajes: 5.807

Código:
trap "some command goes here" 0

ejecuta el script de shell salida
  #5 (Enlace permanente)  
Old 07-01-2009
Starcast Starcast is offline
Usuario Registrado
  
 

Fecha: enero 2009
Ubicación: Minneapolis, MN
Publicaciones: 13
Sí, veo que .... Acabo de terminar una cinta de 2 horas y mi advertencia poped hasta después de que duró todo el tiempo asignado y se cierra normalmente ...

He cambiado el -2 - a -0 - adivinanzas y sólo pensé que era de trabajo .... (No puedo por la vida de mí encontrar un listado de "trampa de las opciones de" explicar lo que cada número se hacen aquí?) Cambié porque el -2 - opción no es poner fin a la secuencia de comandos? Imprime mi código insertado, pero no devolver el símbolo del sistema, sólo sigue la secuencia de comandos?

---------- Publicar actualizada en 04:50 PM ---------- anterior actualización fue en 04:27 PM ----------

Bueno, hablé demasiado pronto. la -2 - opción que detener DVgrab (no salir de la secuencia de comandos cuando presione Ctrl-c en el punto antes de la secuencia de comandos cuando se inicia DVgrab .... Qué está bien, salvo, también tengo una función que se ejecuta en una cuenta regresiva mi script, y continúa después de esta cuenta atrás Ctrl-c ... La cuenta regresiva función tiene este aspecto:


Código:
function countdown
{
        local OLD_IFS="${IFS}"
        IFS=":"
        local ARR=( $1 )
        local SECONDS=$((  (ARR[0] * 60 * 60) + (ARR[1] * 60) + ARR[2]  ))
        local START=$(date +%s)
        local END=$((START + SECONDS))
        local CUR=$START

        while [[ $CUR -lt $END ]]
        do
                CUR=$(date +%s)
                LEFT=$((END-CUR))

                printf "\r%02d:%02d:%02d" \
                        $((LEFT/3600)) $(( (LEFT/60)%60)) $((LEFT%60))

                sleep 1
        done
        IFS="${OLD_IFS}"
        echo "        "
}

¿Hay algo que yo podría incluir en mi trampa de código que matar a esta función de impresión y mi advertencia?

Gracias
-Starcast
  #6 (Enlace permanente)  
Old 07-06-2009
Starcast Starcast is offline
Usuario Registrado
  
 

Fecha: enero 2009
Ubicación: Minneapolis, MN
Publicaciones: 13
Bueno, por lo que me convirtió en mi cerebro y mi cuenta de la solución ... Odio cuando me captura conseguir mi pereza de aquí ...

Para cualquiera que seguir el hilo, esto no lo he descrito que necesitan

Código:
trap 'CUR=$END 
sleep 1 
echo -e "\E[31;40m\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\n+                   WARNING - Early Exit                         +
\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\E[30;47m\n++ Format: $FORMAT    ++ Min Remaing on $destination : $minremain    
\n++ Deck: $deck_number          ++ Customer: $customer      
\n++ Rec Time: $tape_length  ++ Tape: $tapename"
exit ' 2

¡Oh, he añadido el "sueño" para dar cuenta de DVgrab la salida de información que imprime ... otra cosa que me estaba impreso unas pocas líneas después de la advertencia ...

Y añade: «salida» al final de modo que el guión no se mantuvo después de la muerte, la función de cuenta atrás

-Starcast
Reply

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 02:27 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0