![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| [C] problème avec fgets SIGINT singlal! | hurricane86 | High Level Programming | 1 | 01-02-2009 12:04 PM |
| variable passant de bash à partir de perl script bash | arsidh | De programmation et de script Shell | 10 | 06-04-2008 01:25 PM |
| Problème avec la manipulation SIGINT | JamesGoh | High Level Programming | 3 | 02-24-2008 10:39 PM |
| Ne peut pas attraper SIGINT rupture de série alors que se produit | GZZ | High Level Programming | 13 | 11-23-2007 08:06 AM |
| AIX intercepter les appels système | ramkumar.pvs | AIX | 2 | 09-29-2006 03:17 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
L'interception SIGINT dans un script bash
J'ai écrit un script bash qui permet de capturer des vidéos avec DVgrab. En raison de la nature des bandes que je suis la numérisation, parfois, je veux arrêter la capture avant la date fixée pour que je DVgrab. Lorsque c'est le cas, je presse Ctrl-c et DVgrab sorties proprement, mon problème est qu'il ya des informations supplémentaires que le script affiche dans le terminal avec des' echo 'lorsque le script s'exécute jusqu'à ce que l'ensemble du temps. Quand je Ctrl-c aucune de ces informations ne tirages ...
Est-il possible d'intercepter le SIGINT (je pense que c'est ce que je veux, mais je peux me tromper) et il fonctionne exactement comme il le fait par défaut, mais en outre l'écho de quelques variables dans le terminal? De préférence, je voudrais juste faire cela dans mon script ... et pas la manière Ctrl-c fonctions système. Vous ne savez pas si c'est important, mais sur la base de ma lecture avant à ce poste je ne savais pas, mais je exécuter ce script dans un terminal virtuel à un gnome sur Ubuntu (8,10) machine Linux Le peu que je voulais ajouter lorsque Ctrl-c est pressé ressemble à ceci: Code:
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" -Starcast |
|
||||
|
J'ai fini par faire ressembler à ça, mais vous avez donné ce dont j'avais besoin pour y arriver, merci.
Code:
#!/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 |
|
||||
|
Oui, je vois que .... Je viens de terminer une bande de 2 heures et mon avertissement poped après il a couru pour l'ensemble de temps alloué et sorti normalement ...
J'ai changé le -2 - à -0 - juste deviner et je pensais que c'était de travail .... (Je ne peux pas pour la vie de me trouver une liste de «piège options" en expliquant ce que chaque numéro se faire?) Je suis passé parce que le -2 - option n'est pas la fin du script? Elle imprime inséré mon code, mais ne pas faire revenir l'invite, ça continue le script? ---------- Post mis à jour à 04:50 PM ---------- Mise à jour précédente a été, à 04:27 PM ---------- Ok, j'ai parlé trop vite. le -2 - option ne DVgrab arrêter (il n'a pas quitter le script quand je presse Ctrl-c avant le point dans le script quand DVgrab commence .... ce qui est bien, sauf, j'ai aussi une fonction qui s'exécute dans un compte à rebours mon script, et ce à rebours se poursuit après un Ctrl-c ... Le compte à rebours fonction ressemble à ceci: Code:
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 " "
}
Merci -Starcast |
|
||||
|
Ok, donc je me suis tourné sur mon cerveau et trouvé la solution ... Je déteste quand je me faire des captures paresseuse ici ...
Pour toute personne suivant le fil, ce n'est ce que j'ai décrit besoin Code:
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 Et j'ai ajouté «sortie» à la fin afin que le script ne continue pas après la mise à mort le compte à rebours -Starcast |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|