Аренда серверов

Проблема запуска одного скрипта из другого

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.

Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-01-30 18:30:41

Есть скрипт (check_dial_ppp.sh), который проверяет канал в инет (PPP).
Скрипт сам по себе работает отлично. Также отлично работает и при запуске его из крона.
Теперь появилась надобность запускать этот скрипт не напрямую, а через второй скрипт.
Запускаю так:
Код: Выделить всё
CHECK_SCR="`sh check_dial_ppp.sh UP 4 75 "lenta.ru ex.ua"`"
CURR_STATE="$?"

где в переменной CHECK_SCR хочу получить текстовое описание результата скрипта, в CURR_STATE - код выполнения скрипта.

Если проверяемый канал по PPP упавший, скрипт check_dial_ppp.sh канал поднимает, полностью отрабатывает(видно по логу), но второй скрипт(из которого был вызван check_dial_ppp.sh) остается на строке
Код: Выделить всё
CHECK_SCR="`sh check_dial_ppp.sh UP 4 75 "lenta.ru ex.ua"`"
и стоит так, пока его насильно не убить ИЛИ если насильно убить созданный процесс
Код: Выделить всё
ppp -ddial intertelecom
.
Т.е. шелл, в котором был запущен скрипт check_dial_ppp.sh не завершает свою работу, пока порожденный в нем процесс ppp не завершится.
Как разрулить?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение fox » 2012-01-30 19:00:52

Мне кажется, sh приставка лишняя и не нужны ковычки ""... Поэксперементируй.
Да пребудет с нами сила!!!
Всех убью, один останусь!
Аватара пользователя
fox
ст. лейтенант
 
Сообщения: 1122
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-01-30 22:27:53

Кавычки необязательны, действительно.
На счет sh изучаю вопрос.
Спасибо за наводку
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение fox » 2012-01-31 0:57:21

Код: Выделить всё
`my_script.sh`;

Этого вполне достаточно...
А скрипт должен быть исполняемый и в нём первая строчка должна быть:
Код: Выделить всё
#!/bin/sh


Или другой интерпритатор это можно узнать whereis sh или bash или csh, между ними различие будет в синтаксее, вот ссылка по башу:
http://www.opennet.ru/docs/RUS/bash_scripting_guide/

А ещё можео ампрсант в конце строки скрипта поставить:
Код: Выделить всё
`my_scrip.sh &`;

Тогда он в бек-граунде запустет скрипт...
Да пребудет с нами сила!!!
Всех убью, один останусь!
Аватара пользователя
fox
ст. лейтенант
 
Сообщения: 1122
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-01-31 11:03:20

Это все понятно.
Файл скрипта исполняемый, первая строка
Код: Выделить всё
#!/bin/sh
, выполнение в фоне не требуется.
В чем разница:
Код: Выделить всё
`scripn.sh`

и
Код: Выделить всё
`sh script.sh`

По идее разницы в поведении быть не должно.
Однако разница есть...
Есть предположение, что разницы не будет, если во втором варианте убрать первую строку
Код: Выделить всё
#!/bin/sh
, иначе, по идее, запускается один шелл, и из него еще один шелл, хотя такое поведение, как мне кажется, не логично...
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-01-31 11:28:18

На счет двойных кавычек.
Если результат скрипта многострочный, двойные кавычки нужны обязательно.
Код: Выделить всё
PEREM="`script.sh`"

Причем,если результат скрипта не интересует, можно запустить скрипт просто
Код: Выделить всё
script.sh

При этом скрипт выполняется в порожденном интерпретаторе.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение fox » 2012-01-31 12:27:23

Ну так у тебя получилось сделать то что надо или ещё нет?
Да пребудет с нами сила!!!
Всех убью, один останусь!
Аватара пользователя
fox
ст. лейтенант
 
Сообщения: 1122
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-01-31 12:34:25

Получиться то получилось, но не ясно почему по разному ведет себя.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев

Re: Проблема запуска одного скрипта из другого

Непрочитанное сообщение kpp » 2012-02-03 15:32:24

И все-таки есть какая-то лыжа...
При таком запуске часто тоже скрипт check_dial_ppp.sh отрабатывает, но дальше не двигается...
Код: Выделить всё
CHECK_SCR=`check_dial_ppp.sh`

Пока выкрутился так:
Код: Выделить всё
check_dial_ppp.sh > /tmp/tmp_ppp.dat
CHECK_SCR=`cat /tmp/tmp_ppp.dat`
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
ст. прапорщик
 
Сообщения: 574
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев


Вернуться в SHELL

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron