![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| [C] problema con fgets SIGINT singlal! | hurricane86 | Di programmazione ad alto livello | 1 | 01-02-2009 12:04 PM |
| passando dal variabile di perl da bash script bash | arsidh | Shell scripting e di programmazione | 10 | 06-04-2008 01:25 PM |
| Problema con la manipolazione SIGINT | JamesGoh | Di programmazione ad alto livello | 3 | 02-24-2008 10:39 PM |
| Non riesce a rompere SIGINT mentre seriale condizione si verifica | gzz | Di programmazione ad alto livello | 13 | 11-23-2007 08:06 AM |
| AIX intercettare le chiamate di sistema | ramkumar.pvs | AIX | 2 | 09-29-2006 03:17 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Intercettazione SIGINT in un script bash
Ho scritto uno script bash che cattura video con DVgrab. A causa della natura dei nastri che io sono di digitalizzazione, a volte vorrei smettere di catturare la prima volta che ho impostato per DVgrab. In questo caso ho premere Ctrl-c e DVgrab esce pulito, il mio problema è che non vi sia informazioni supplementari che lo script stampa nel terminale con 'echo', quando lo script viene eseguito fino a quando il tempo impostato. Quando ho Ctrl-c nessuna di queste informazioni stampa ... C'è un modo per intercettare il SIGINT (Penso che questo è ciò che voglio, ma potrebbe essere sbagliato) e farlo funzionare esattamente come avviene per impostazione predefinita, ma anche qualche eco varibles nel terminale? Preferibilmente vorrei farlo solo nel mio script ... e non per effetto di modo Ctrl-c funzioni a livello di sistema. Non sono sicuro se è importante, ma in base alla mia prima lettura di questo post non ero sicuro, ma ho eseguito questo script in un terminale virtuale in gnome su Ubuntu (8,10) macchina Linux I bit che volevo aggiungere Ctrl-C quando viene premuto simile a questo: Codice:
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" Grazie in anticipo! -Starcast |
|
||||
|
Ho finito per renderlo simile a questa, ma ciò che mi avete dato necessario per arrivare, grazie. Codice:
#!/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 |
|
||||
|
Sì, vedo che .... Ho appena finito un nastro 2 ore e il mio avvertimento poped dopo che correva per il pieno e tempo assegnato usciti normalmente ... Ho cambiato il -2 - a -0 - solo indovinando e ho pensato che stava lavorando .... (Non posso per la vita di me trovare un elenco di 'trappola opzioni' spiegare cosa ogni numero qui farebbe?) Ho acceso perché il -2 - opzione non è la fine dello script? È inserito il mio codice di stampa, ma non riportare il prompt, ma solo continua lo script? Posta ---------- aggiornato a 04:50 PM ---------- precedente aggiornamento è stato a 04:27 PM ---------- Ok, ho parlato troppo presto. il -2 - opzione non interrompere DVgrab (non uscire dal copione, quando i premere Ctrl-c prima il punto in cui lo script DVgrab quando inizia .... Quale è bene, tranne, mi hanno anche una funzione che esegue un conto alla rovescia in il mio script, e questo alla rovescia continua anche dopo Ctrl-c ... Il conto alla rovescia funzione è simile a questa: Codice:
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 " "
}
C'è qualcosa che ho potuto includere nel-mio-trappola codice che uccidere questa funzione e stampare il mio avviso? Grazie -Starcast |
|
||||
|
Ok, così ho girato il mio cervello e capito la mia soluzione ... Odio quando mi cattura me sempre pigri qui ... Per chi segue il filo, questo fa quello che ho descritto bisogno Codice:
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 Ah, ho aggiunto il 'sonno' per conto DVgrab per l'uscita di informazioni che la stampa ... altrimenti mi è stato sempre poche righe stampate dopo l'avviso ... E ho aggiunto 'uscita' alla fine in modo che lo script non continuare dopo l'abbattimento funzione il conto alla rovescia -Starcast |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|