Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - Скрипт на Shell

Ответить
Настройки темы
FreeBSD - Скрипт на Shell

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


совсем ничего не писал до этого. нужно было написать небольшой скрипт который срабатывает при подключении pptp mpd5

if [ `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ]; then
echo 'ok'
fi

ругается, что выражение у if неверное.
хотя
[ `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ] ; echo $?
работает.
где может быть ошибка?

Отправлено: 13:56, 25-05-2013

 

Аватара для ruslandh

info man howto


Сообщения: 6958
Благодарности: 384

Профиль | Сайт | Отправить PM | Цитировать


Наверное, вы хотите :
if [ -z `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ]; then echo 'ok'; fi

-------
Поспешай не торопясь


Отправлено: 14:06, 25-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата ruslandh:
if [ -z `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ]; then echo 'ok'; fi »
В этом варианте пропущены кавычки: if [ -z "`echo 192.168.4.15 | grep '192.168.0.[0-9]*'`" ]
Или так: if [ x == x"`echo 192.168.4.15 | grep '192.168.0.[0-9]*'`" ]

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Отправлено: 16:15, 25-05-2013 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


AMDBulldozer,
да нет, с -z работает и без кавычек. Попробуйте

Правда, у меня и без -z не ругается, хотя и ok не пишет
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:57, 25-05-2013 | #4


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата mar:
с -z работает и без кавычек. »
Вы правы, действительно работает. Это меня удивило - я был уверен, что работать не будет. Признаю свою ошибку, наверное мне следовало проверить, прежде чем писать. Тем не менее, я всё равно считаю, что вариант с кавычками лучше - если результатов поиска grep будет больше одного, командная строка без кавычек выдаст ошибку.

Возможно автор исходно хотел написать что-то вроде такого:
Код: Выделить весь код
echo 192.168.4.15 | grep '192.168.0.[0-9]* &> /dev/null
if (( \! $? )); then
  echo 'ok'
fi

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Последний раз редактировалось AMDBulldozer, 25-05-2013 в 19:50. Причина: Добавлен тег [code] чтобы сохранить форматирование


Отправлено: 19:43, 25-05-2013 | #5


Странный тип


Сообщения: 813
Благодарности: 73

Профиль | Отправить PM | Цитировать


Вообще не понятно о чём речь.

`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.
И что означает "192.168.0.[0-9]*"?

-------
Сколько не думай, а лучше водки ничего не придумаешь.


Отправлено: 22:06, 25-05-2013 | #6


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата Kent:
Вообще не понятно о чём речь.
`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.
И что означает "192.168.0.[0-9]*"? »
Очевидно одна из строк переменная (к примеру, автор для простоты написал "echo 192.168.4.15", хотя имелось в виду "ifconfig" или какая-то другая команда, выдающая, помимо всего прочего, ip-адрес). И этот ip проверяется на принадлежность к определенной подсети.

Но, с другой стороны, какая нам разница почему автору нужно заставить работать данный кусочек сценария? Чтобы дать ему совет, понимать назначение данного сценария совершенно не обязательно.

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.


Отправлено: 13:29, 26-05-2013 | #7


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


чего-то я сразу не знал что в начале файла надо писать
#!/bin/sh

чтобы на шелле интерпретировался. Заработало. Спасибо

Конечно место 129.168.4.15 будет переменная, это часть скрипта для прописывания маршрутов при подключении по pptp в зависимости от того, кто подключился

Отправлено: 17:13, 27-05-2013 | #8

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


dt88,
ха Тогда надо писать, что это файл со скриптом, а то тут все, похоже, гоняли это все через командную строку без всяких шебангов

Отправлено: 11:30, 29-05-2013 | #9



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - Скрипт на Shell

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите, плз, разобраться с программой на shell sade Программирование в *nix 1 26-05-2010 23:47
Помогите с программой на shell pogo Программирование в *nix 4 21-05-2010 12:24
На языке Shell разработать программу. MVA Программирование в *nix 4 02-05-2010 14:54
проблема с 'find' (скрипт на shell) romez777 Программирование в *nix 1 20-02-2007 13:12
Программирование на shell Andrewkras Общий по Linux 11 13-03-2003 17:23




 
Переход