Страница 1 из 2
sh непонимаю его
Добавлено: 2010-01-02 2:50:46
fox
На прямую sh я избегал и мне хватала других языков но вот тут надо написать на нём скрипт, учебников по нему толковых в гугле нет, чёрт ногу сломит я уже устал, если у кого то есть то поделитесь пожалуйста!
Как в sh спросить существует или нет переменная?
И вот маленький скрипт:
Код: Выделить всё
#!/bin/sh
prov=''
rez=$1;
if [ $rez != $prov]
then echo "YES";
else echo "NO";
fi
Когда я ввожу вод так:
Нормально!
А вод когда вод так:
Вот, что бросается в глаза:
Как это вылечить?
За ранние спасибо, с уважением fox!
Re: sh непонимаю его
Добавлено: 2010-01-02 3:12:21
komander
Код: Выделить всё
#!/bin/sh
prov=''
rez=$1
if [ "$rez" != "$prov" ];
then echo "YES";
else echo "NO";
fi
Re: sh непонимаю его
Добавлено: 2010-01-02 3:40:19
fox
komander писал(а):Код: Выделить всё
#!/bin/sh
prov=''
rez=$1
if [ "$rez" != "$prov" ];
then echo "YES";
else echo "NO";
fi
Спасибо огромное помогло!
А учебника нету у вас случайно?
И как сделать вот так, как в php:
У шела что то подобно есть?
Ещё раз огромное спасибо!
Re: sh непонимаю его
Добавлено: 2010-01-02 8:17:38
zg
fox писал(а):А учебника нету у вас случайно?
man sh
fox писал(а):У шела что то подобно есть?
[ -n "${var}"]
man [
Re: sh непонимаю его
Добавлено: 2010-01-02 20:17:15
fox
Man - это круто, но я сума сойду если по нему чему то научюсь, нужен учебник(
Ладно новая не задача:
как сделать, что бы можно было распознавать истину, есть ли в такой переменной такое слово?
Код: Выделить всё
a=`ps -x|grep script.pl`;
b='script.pl';
так не катит
if[ "$a" = "$b" ]
then echo "YES";
else echo "NO";
fi
Как мне просканировать текст на наличие слова?
Большое спасибо всем тем кто мне помогает!
Re: sh непонимаю его
Добавлено: 2010-01-02 22:53:53
Shuba
fox писал(а):Man - это круто, но я сума сойду если по нему чему то научюсь, нужен учебник(
Ладно новая не задача:
как сделать, что бы можно было распознавать истину, есть ли в такой переменной такое слово?
Код: Выделить всё
a=`ps -x|grep script.pl`;
b='script.pl';
так не катит
if[ "$a" = "$b" ]
then echo "YES";
else echo "NO";
fi
Как мне просканировать текст на наличие слова?
Большое спасибо всем тем кто мне помогает!
а если так:
Код: Выделить всё
a=`ps -x|grep script.pl|wc -l`;
if [ "$a" -ne 0 ]
then echo "YES";
else echo "NO";
fi
Re: sh непонимаю его
Добавлено: 2010-01-03 1:03:05
fox
Shuba писал(а):fox писал(а):Man - это круто, но я сума сойду если по нему чему то научюсь, нужен учебник(
Ладно новая не задача:
как сделать, что бы можно было распознавать истину, есть ли в такой переменной такое слово?
Код: Выделить всё
a=`ps -x|grep script.pl`;
b='script.pl';
так не катит
if[ "$a" = "$b" ]
then echo "YES";
else echo "NO";
fi
Как мне просканировать текст на наличие слова?
Большое спасибо всем тем кто мне помогает!
а если так:
Код: Выделить всё
a=`ps -x|grep script.pl|wc -l`;
if [ "$a" -ne 0 ]
then echo "YES";
else echo "NO";
fi
Это то хорошо:
Только вот брешит часто, когда происходит grep он часто сам себя ещё отлавливает, и по этому счётчик сбивается он тогда может и ноль и один, ответить...
Вот так то..
Re: sh непонимаю его
Добавлено: 2010-01-03 1:10:21
fox
Вопрос вот какой ещё, мне не только надо определить работает этот скрипт или нет, мне ещё и PID выловить надо, как это сделать?
Я пологаю примерно так:
Код: Выделить всё
1. tmp=`ps -x| grep script.pl`;
2. Сделать цикол, и в виде массивая выложить, если совпадение есть по имени скрипта, то работает, и тогда pid загнать в переменную!
3. Ну тут понятно kill $pid
Не кто мне не подскажет как это сделать?
Буду очень признателен!
Re: sh непонимаю его
Добавлено: 2010-01-03 7:29:32
zg
fox писал(а):1. tmp=`ps -x| grep script.pl`;
fox писал(а):2. Сделать цикол, и в виде массивая выложить, если совпадение есть по имени скрипта, то работает, и тогда pid загнать в переменную!
fox писал(а):3. Ну тут понятно kill $pid
??? для чего?
Re: sh непонимаю его
Добавлено: 2010-01-03 14:11:00
fox
А как этим пользоваться?
Дико извеняюсь...
Re: sh непонимаю его
Добавлено: 2010-01-03 16:59:38
zg
fox писал(а):А как этим пользоваться?
это PID, который нужно запихнуть в pid-файл и проверять при повторном запуске
Re: sh непонимаю его
Добавлено: 2010-01-03 17:21:05
fox
zg писал(а):fox писал(а):А как этим пользоваться?
это PID, который нужно запихнуть в pid-файл и проверять при повторном запуске
это я понял, непонятно, как оно работает, куда это в скрипт? Есть рабочий пример?
Re: sh непонимаю его
Добавлено: 2010-01-03 17:50:57
Shuba
fox писал(а):
Это то хорошо:
Только вот брешит часто, когда происходит grep он часто сам себя ещё отлавливает, и по этому счётчик сбивается он тогда может и ноль и один, ответить...
Вот так то..
Усложним:
Re: sh непонимаю его
Добавлено: 2010-01-03 18:21:08
fox
Вот это уже дело!
Огромное человеческое спасибо ВАМ!
Только как теперь с pid быть надо как то вырубить теперь раз оно работает?
Re: sh непонимаю его
Добавлено: 2010-01-03 18:38:14
Shuba
fox писал(а):
Вот это уже дело!
Огромное человеческое спасибо ВАМ!
Только как теперь с pid быть надо как то вырубить теперь раз оно работает?
Код: Выделить всё
ps -x|grep script.pl|grep -v "grep"|awk '{ print $2 }'
Re: sh непонимаю его
Добавлено: 2010-01-03 18:41:17
Shuba
Ну а если прибить - то так:
Код: Выделить всё
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
Re: sh непонимаю его
Добавлено: 2010-01-03 19:31:40
fox
Огромное спасибо очень помогло!
Знайте все кто помогали мне, вы помогали не просто мне, а всем!
Т.к. я это не только для себя делаю, скоровы увидете, это будет доступно для всех!
Ещё раз огромное спасибо!
Re: sh непонимаю его
Добавлено: 2010-01-03 21:08:53
zg
Shuba писал(а):kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
гм...
man pkill не?
fox писал(а):скоровы увидете, это будет доступно для всех!
маны вроде почти по-русски пишут

Re: sh непонимаю его
Добавлено: 2010-01-04 13:24:42
fox
Ещё раз спасибо, за помощь!
Re: sh непонимаю его
Добавлено: 2010-01-24 10:05:38
Soldier
Привет всем.
пишу мозговыносительнуюзубодробительную штуку.
Код: Выделить всё
#!/bin/sh
while [ "$1" -ne "stop" ]
do
/bin/echo "stop me" >> /dev/ttyv7
done
Со временем вместо отправки stop me в 7 терминал будет стоять что-нибудь другое.
Проблема вся в том, что сее творение не слушается. оно запускается, шлет писанину в 7 терминал, но не отключается по команде stop.
Подскажите что не так?
Заранее благодарен.
Re: sh непонимаю его
Добавлено: 2010-01-24 10:42:14
Shuba
Soldier писал(а):Привет всем.
пишу мозговыносительнуюзубодробительную штуку.
Код: Выделить всё
#!/bin/sh
while [ "$1" -ne "stop" ]
do
/bin/echo "stop me" >> /dev/ttyv7
done
Со временем вместо отправки stop me в 7 терминал будет стоять что-нибудь другое.
Проблема вся в том, что сее творение не слушается. оно запускается, шлет писанину в 7 терминал, но не отключается по команде stop.
Подскажите что не так?
Заранее благодарен.
Ну так конечно не остановишь, ты запускаешь данный скрипт и если там нет команды "stop", то вгоняешь его вбесконечный цикл.
Re: sh непонимаю его
Добавлено: 2010-01-24 10:44:21
Soldier
а как это можн сделать не отслеживая пиды и прочее?
просто по команде stop?
Re: sh непонимаю его
Добавлено: 2010-01-24 13:34:40
Shuba
Soldier писал(а):а как это можн сделать не отслеживая пиды и прочее?
просто по команде stop?
Ну так выше были примеры:
Код: Выделить всё
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
Соответсвенно:
Код: Выделить всё
#!/bin/sh
# Убиваем уже запущенный скрипт
kill `ps -x|grep script.sh|grep -v grep|awk '{ print $2 }'`
# Если нет команды stop, то начинаем выводить в консоль
while [ "$1" -ne "stop" ]
do
/bin/echo "stop me" >> /dev/ttyv7
done
Но можно реализовать и так, чтобы при запуске проверяла запущена ли копия, и если запущена и нет команды stop, ничего заканчивать работу без прибития предыдущей копии, а при stop всё заканчивать. Вообщем в нужном направлении я тебя пнул, тренируйся на кошках
Re: sh непонимаю его
Добавлено: 2010-01-24 13:41:50
Soldier
а что за *.pl скрипт? О_о
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
имя моего скрипта?
Re: sh непонимаю его
Добавлено: 2010-01-24 23:23:28
Shuba
Soldier писал(а):а что за *.pl скрипт? О_о
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
имя моего скрипта?
Правильно, вместо script.pl вставь нужное имя