The UNIX and Linux Forums  

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
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

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 07-01-2009
Starcast Starcast is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Место проведения: Миннеаполис, Миннесота
Сообщений: 13
Перехват 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
Old 07-01-2009
Джим Макнамара jim mcnamara is offline Forum Staff  
...@...
  
 

Регистрация: Февраль 2004
Местонахождение: Н. М.
Сообщения: 5770
Код:
#!/bin/bash
trap 'echo "Control-C disabled." ' 2
... your code here.
Old 07-01-2009
Starcast Starcast is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Место проведения: Миннеаполис, Миннесота
Сообщений: 13
Я в конечном итоге сделать это выглядит так, но вы дали то, что мне было нужно, чтобы там, спасибо.

Код:
#!/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
Old 07-01-2009
Джим Макнамара jim mcnamara is offline Forum Staff  
...@...
  
 

Регистрация: Февраль 2004
Местонахождение: Н. М.
Сообщения: 5770
Код:
trap "some command goes here" 0
запускает скрипт оболочки на выезде
Old 07-01-2009
Starcast Starcast is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Место проведения: Миннеаполис, Миннесота
Сообщений: 13
Да, я вижу, что .... Я только что закончил 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
Old 07-06-2009
Starcast Starcast is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2009
Место проведения: Миннеаполис, Миннесота
Сообщений: 13
Итак, я повернулся на мой мозг, и понял, мое решение ... Я ненавижу его, когда я пойму я получаю ленивый здесь ...

Для тех, кто после резьба, это то, что я описал, нуждающихся
Код:
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
Ой, я добавил сна ", чтобы за счет выхода DVgrab информация, что она печатает ... иначе я получаю несколько строк печатного после оповещения ...

И я добавил, 'Exit' на конце, чтобы сценарий не продолжаются после убийства отсчет функции

-Starcast
Reply

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 11:57 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0