![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| [C] fgets проблема с SIGINT singlal!!! | hurricane86 | Программирования высокого уровня | 1 | 01-02-2009 12:04 PM |
| проходящей с переменным Баш на Баш из Perl скрипта | arsidh | Shell программирование и сценарии | 10 | 06-04-2008 01:25 PM |
| Проблема с обработкой SIGINT | JamesGoh | Программирования высокого уровня | 3 | 02-24-2008 10:39 PM |
| Не удается поймать SIGINT при серийном перерыва состояние происходит | gzz | Программирования высокого уровня | 13 | 11-23-2007 08:06 AM |
| Экс перехвата системных вызовов | ramkumar.pvs | AIX | 2 | 09-29-2006 03:17 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Перехват SIGINT в Bash скрипта
Я написал скрипт, который Баш захватывает видео с DVgrab. Учитывая характер этой пленки, что я в цифровую форму, иногда я хочу завершить съемки до момента, которые я установил для DVgrab. При этом случае я нажмите Ctrl-C и выходы DVgrab чисто моя проблема заключается в том, что есть дополнительная информация о том, что сценарий выводит на терминал с "Эхо", когда скрипт работает, пока не установлено время. Когда я Ctrl-C, никто эту информацию печатает ...
Есть ли способ перехватить SIGINT (я думаю, это то, что я хочу, но я мог бы быть неправильно), и он действует именно так, как это по умолчанию, но дополнительно повторить несколько varibles в терминале? Желательно мне хотелось бы сделать это только в моем скрипте ... эффект, а не путь Ctrl-C, функции всей системы. Не уверен, что это важно, но для моего чтения до этого поста, я не уверен, но я запускать этот скрипт в виртуальном терминале в GNOME на Ubuntu (8.10) Linux машине Битовая что я хотел бы добавить, когда Ctrl-C нажата выглядит так: Код:
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 |
|
||||
|
Код:
#!/bin/bash trap 'echo "Control-C disabled." ' 2 ... your code here. |
|
||||
|
Я в конечном итоге сделать это выглядит так, но вы дали то, что мне было нужно, чтобы там, спасибо.
Код:
#!/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 |
|
||||
|
Код:
trap "some command goes here" 0 |
|
||||
|
Да, я вижу, что .... Я только что закончил 2 часа ленты и моя предупреждение poped вверх после того, как она побежала к полному отведенное время и вышла, как правило, ...
Я изменил -2 - на -0 - просто угадали, и я думал, она работает .... (Я не могу за жизнь мне найти список 'эту ловушку' объяснить то, что каждый номер здесь будет делать?) Я перешел, потому что -2 - опция не конец скрипта? Она печатает мои вставить код, но не вернуть строке, он просто продолжает сценарий? ---------- Пост обновлен в 04:50 PM ---------- Предыдущее обновление было в 04:27 PM ---------- Ладно, я говорил слишком рано. о -2 - опция делает остановки DVgrab (это не выход из сценария, когда я нажмите Ctrl-C до точки в сценарий, когда начинает DVgrab .... Какой штраф, за исключением, я также есть функция, которая запускает отсчета в мой скрипт, и отсчет времени продолжается после Ctrl-C ... Отсчет функция выглядит следующим образом: Код:
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 " "
}
Спасибо -Starcast |
|
||||
|
Итак, я повернулся на мой мозг, и понял, мое решение ... Я ненавижу его, когда я пойму я получаю ленивый здесь ...
Для тех, кто после резьба, это то, что я описал, нуждающихся Код:
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 И я добавил, 'Exit' на конце, чтобы сценарий не продолжаются после убийства отсчет функции -Starcast |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|