The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите девушке разобраться в shell"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите девушке разобраться в shell"  
Сообщение от zima email(ok) on 06-Мрт-06, 23:58 
Hi!
Помогите мне пожалуйста!
ребята,кто знает каким образом я могу обрабатывать прерывания самостоятельно?
а то вот такой кусочек у меня:

#shell program
ls | wc
sleep 15
num=10
i=0
trap '`expr $i + 1`;
if [ $i -lt num ];
then echo ля-ля-ля;echo i=$i;
else exit 1;' 2

так вот она работает так:
нажимаю CTRL+C и выдает
ля-ля-ля
i=0
и завершает работу.
а надо бы,чтобы  продолжалась работа программки до 10 нажатий клавишь CTRL+C.
помогите пожалуста понть где я ошиблась.
спасибо.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помогите девушке разобраться в shell"  
Сообщение от qwe (??) on 07-Мрт-06, 09:04 
>Hi!
>Помогите мне пожалуйста!
>ребята,кто знает каким образом я могу обрабатывать прерывания самостоятельно?
>а то вот такой кусочек у меня:
>
>#shell program
>ls | wc
>sleep 15
>num=10
>i=0
>trap '`expr $i + 1`;
>if [ $i -lt num ];
>then echo ля-ля-ля;echo i=$i;
>else exit 1;' 2
>
>так вот она работает так:
>нажимаю CTRL+C и выдает
>ля-ля-ля
>i=0
>и завершает работу.
>а надо бы,чтобы  продолжалась работа программки до 10 нажатий клавишь CTRL+C.
>
>помогите пожалуста понть где я ошиблась.
>спасибо.

ну можно например попробувать запустить десять шелов последовально

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Помогите девушке разобраться в shell"  
Сообщение от dimus (??) on 07-Мрт-06, 09:18 
>Hi!
>Помогите мне пожалуйста!
>ребята,кто знает каким образом я могу обрабатывать прерывания самостоятельно?
>а то вот такой кусочек у меня:
>
>#shell program
>ls | wc
>sleep 15
>num=10
>i=0
>trap '`expr $i + 1`;
>if [ $i -lt num ];
>then echo ля-ля-ля;echo i=$i;
>else exit 1;' 2
>
>так вот она работает так:
>нажимаю CTRL+C и выдает
>ля-ля-ля
>i=0
>и завершает работу.
>а надо бы,чтобы  продолжалась работа программки до 10 нажатий клавишь CTRL+C.
>
>помогите пожалуста понть где я ошиблась.
>спасибо.

Если это вся программа, то я не вижу, где бы был переход на ее начало. Т.е. после отработки она просто завершится штатным образом.
Вы можете привести весь код?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Помогите девушке разобраться в shell"  
Сообщение от madskull (ok) on 07-Мрт-06, 10:40 
>помогите пожалуста понть где я ошиблась.
да везде :)
> `expr $i + 1`
тут, вероятно, хотелось сделать инкремент i.
проще так: ((i++))

> if [ $i -lt num ];
тут явно должно быть $num

Ну, а в общем и целом, я бы сделал так
i=0
num=10
trap 'echo "Тра-ля-ля $((++i))"; [ $i -ge $num ] && exit' INT

а потом может идти какой-то код. например:

while :; do
    echo "i=$i"
    sleep 1
done

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру