![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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 |
|
||||
|
Código:
#!/bin/bash trap 'echo "Control-C disabled." ' 2 ... your code here. |
|
||||
|
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 |
|
||||
|
Código:
trap "some command goes here" 0 ejecuta el script de shell salida |
|
||||
|
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 |
|
||||
|
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 |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|