sh непонимаю его

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
fox
ст. лейтенант
Сообщения: 1154
Зарегистрирован: 2008-07-24 0:25:31
Откуда: Ukraine, Donetsk

sh непонимаю его

Непрочитанное сообщение fox » 2010-01-02 2:50:46

На прямую sh я избегал и мне хватала других языков но вот тут надо написать на нём скрипт, учебников по нему толковых в гугле нет, чёрт ногу сломит я уже устал, если у кого то есть то поделитесь пожалуйста!
Как в sh спросить существует или нет переменная?
И вот маленький скрипт:

Код: Выделить всё

#!/bin/sh


prov=''
rez=$1;

if [ $rez != $prov]
then echo "YES";
else echo "NO";
fi
Когда я ввожу вод так:

Код: Выделить всё

 ./sc.sh
YES
Нормально!
А вод когда вод так:

Код: Выделить всё

./sc.sh fox
[: !=: argument expected
NO
Вот, что бросается в глаза:

Код: Выделить всё

[: !=: argument expected
Как это вылечить?
За ранние спасибо, с уважением fox!
Да пребудет с нами сила!!!
Всех убью, один останусь!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

komander
рядовой
Сообщения: 16
Зарегистрирован: 2009-09-03 14:59:22

Re: sh непонимаю его

Непрочитанное сообщение komander » 2010-01-02 3:12:21

Код: Выделить всё

#!/bin/sh


prov=''
rez=$1

if [ "$rez" != "$prov" ];
then echo "YES";
else echo "NO";
fi

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-02 3:40:19

komander писал(а):

Код: Выделить всё

#!/bin/sh


prov=''
rez=$1

if [ "$rez" != "$prov" ];
then echo "YES";
else echo "NO";
fi
Спасибо огромное помогло!
А учебника нету у вас случайно?
И как сделать вот так, как в php:

Код: Выделить всё

isset($a);
У шела что то подобно есть?
Ещё раз огромное спасибо!
Да пребудет с нами сила!!!
Всех убью, один останусь!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: sh непонимаю его

Непрочитанное сообщение zg » 2010-01-02 8:17:38

fox писал(а):А учебника нету у вас случайно?
man sh
fox писал(а):У шела что то подобно есть?
[ -n "${var}"]
man [

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-02 20:17:15

Man - это круто, но я сума сойду если по нему чему то научюсь, нужен учебник(
Ладно новая не задача:
как сделать, что бы можно было распознавать истину, есть ли в такой переменной такое слово?

Код: Выделить всё

a=`ps -x|grep script.pl`;

b='script.pl';

так не катит
if[ "$a" = "$b" ]
then echo "YES";
else echo "NO";
fi
Как мне просканировать текст на наличие слова?
Большое спасибо всем тем кто мне помогает!
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-02 22:53:53

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
Сила ночи, сила дня - одинакова фигня!

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 1:03:05

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
Это то хорошо:

Код: Выделить всё

ps -x|grep script.pl|wc -l
Только вот брешит часто, когда происходит grep он часто сам себя ещё отлавливает, и по этому счётчик сбивается он тогда может и ноль и один, ответить...
Вот так то..
Да пребудет с нами сила!!!
Всех убью, один останусь!

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 1:10:21

Вопрос вот какой ещё, мне не только надо определить работает этот скрипт или нет, мне ещё и PID выловить надо, как это сделать?
Я пологаю примерно так:

Код: Выделить всё

1. tmp=`ps -x| grep script.pl`;

2. Сделать цикол, и в виде массивая выложить, если совпадение есть по  имени скрипта, то работает, и тогда pid загнать в переменную!

3. Ну тут понятно kill $pid
Не кто мне не подскажет как это сделать?
Буду очень признателен!
Да пребудет с нами сила!!!
Всех убью, один останусь!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: sh непонимаю его

Непрочитанное сообщение zg » 2010-01-03 7:29:32

fox писал(а):1. tmp=`ps -x| grep script.pl`;

Код: Выделить всё

%sh -c 'echo $$'
69273
fox писал(а):2. Сделать цикол, и в виде массивая выложить, если совпадение есть по  имени скрипта, то работает, и тогда pid загнать в переменную!
:cz2:
fox писал(а):3. Ну тут понятно kill $pid
??? для чего?

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 14:11:00

zg писал(а):

Код: Выделить всё

%sh -c 'echo $$'
69273
А как этим пользоваться?
Дико извеняюсь...
Да пребудет с нами сила!!!
Всех убью, один останусь!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: sh непонимаю его

Непрочитанное сообщение zg » 2010-01-03 16:59:38

fox писал(а):А как этим пользоваться?
это PID, который нужно запихнуть в pid-файл и проверять при повторном запуске

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 17:21:05

zg писал(а):
fox писал(а):А как этим пользоваться?
это PID, который нужно запихнуть в pid-файл и проверять при повторном запуске
это я понял, непонятно, как оно работает, куда это в скрипт? Есть рабочий пример?
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-03 17:50:57

fox писал(а): Это то хорошо:

Код: Выделить всё

ps -x|grep script.pl|wc -l
Только вот брешит часто, когда происходит grep он часто сам себя ещё отлавливает, и по этому счётчик сбивается он тогда может и ноль и один, ответить...
Вот так то..
Усложним:

Код: Выделить всё

ps -x|grep script.pl|grep -v "grep"|wc -l
Сила ночи, сила дня - одинакова фигня!

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 18:21:08

Код: Выделить всё

ps -x|grep script.pl|grep -v "grep"|wc -l
Вот это уже дело!
Огромное человеческое спасибо ВАМ!
Только как теперь с pid быть надо как то вырубить теперь раз оно работает?
Да пребудет с нами сила!!!
Всех убью, один останусь!

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-03 18:38:14

fox писал(а):

Код: Выделить всё

ps -x|grep script.pl|grep -v "grep"|wc -l
Вот это уже дело!
Огромное человеческое спасибо ВАМ!
Только как теперь с pid быть надо как то вырубить теперь раз оно работает?

Код: Выделить всё

ps -x|grep script.pl|grep -v "grep"|awk '{ print $2 }'
Сила ночи, сила дня - одинакова фигня!

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-03 18:41:17

Ну а если прибить - то так:

Код: Выделить всё

kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
Сила ночи, сила дня - одинакова фигня!

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-03 19:31:40

Огромное спасибо очень помогло!
Знайте все кто помогали мне, вы помогали не просто мне, а всем!
Т.к. я это не только для себя делаю, скоровы увидете, это будет доступно для всех!
Ещё раз огромное спасибо!
Да пребудет с нами сила!!!
Всех убью, один останусь!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: sh непонимаю его

Непрочитанное сообщение zg » 2010-01-03 21:08:53

Shuba писал(а):kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
гм... man pkill не?
fox писал(а):скоровы увидете, это будет доступно для всех!
маны вроде почти по-русски пишут :smile:

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

Re: sh непонимаю его

Непрочитанное сообщение fox » 2010-01-04 13:24:42

Ещё раз спасибо, за помощь!
Да пребудет с нами сила!!!
Всех убью, один останусь!

Soldier
ст. сержант
Сообщения: 364
Зарегистрирован: 2008-10-02 9:28:30

Re: sh непонимаю его

Непрочитанное сообщение Soldier » 2010-01-24 10:05:38

Привет всем.
пишу мозговыносительнуюзубодробительную штуку.

Код: Выделить всё

#!/bin/sh
while [ "$1" -ne "stop" ]
do
/bin/echo "stop me" >> /dev/ttyv7
done
Со временем вместо отправки stop me в 7 терминал будет стоять что-нибудь другое.
Проблема вся в том, что сее творение не слушается. оно запускается, шлет писанину в 7 терминал, но не отключается по команде stop.

Подскажите что не так?
Заранее благодарен.
Tux: "Kill Bill !!!"

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-24 10:42:14

Soldier писал(а):Привет всем.
пишу мозговыносительнуюзубодробительную штуку.

Код: Выделить всё

#!/bin/sh
while [ "$1" -ne "stop" ]
do
/bin/echo "stop me" >> /dev/ttyv7
done
Со временем вместо отправки stop me в 7 терминал будет стоять что-нибудь другое.
Проблема вся в том, что сее творение не слушается. оно запускается, шлет писанину в 7 терминал, но не отключается по команде stop.

Подскажите что не так?
Заранее благодарен.
Ну так конечно не остановишь, ты запускаешь данный скрипт и если там нет команды "stop", то вгоняешь его вбесконечный цикл.
Сила ночи, сила дня - одинакова фигня!

Soldier
ст. сержант
Сообщения: 364
Зарегистрирован: 2008-10-02 9:28:30

Re: sh непонимаю его

Непрочитанное сообщение Soldier » 2010-01-24 10:44:21

а как это можн сделать не отслеживая пиды и прочее?
просто по команде stop?
Tux: "Kill Bill !!!"

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-24 13:34:40

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 всё заканчивать. Вообщем в нужном направлении я тебя пнул, тренируйся на кошках
Сила ночи, сила дня - одинакова фигня!

Soldier
ст. сержант
Сообщения: 364
Зарегистрирован: 2008-10-02 9:28:30

Re: sh непонимаю его

Непрочитанное сообщение Soldier » 2010-01-24 13:41:50

а что за *.pl скрипт? О_о
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
имя моего скрипта?
Tux: "Kill Bill !!!"

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: sh непонимаю его

Непрочитанное сообщение Shuba » 2010-01-24 23:23:28

Soldier писал(а):а что за *.pl скрипт? О_о
kill `ps -x|grep script.pl|grep -v grep|awk '{ print $2 }'`
имя моего скрипта?
Правильно, вместо script.pl вставь нужное имя
Сила ночи, сила дня - одинакова фигня!