FreeBSD - Скрипт на Shell

Ответить
Аватара пользователя
dt88

FreeBSD - Скрипт на Shell

Сообщение dt88 »

совсем ничего не писал до этого. нужно было написать небольшой скрипт который срабатывает при подключении 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 $?

работает.

где может быть ошибка?
Аватара пользователя
ruslandh

Re: FreeBSD - Скрипт на Shell

Сообщение ruslandh »

Наверное, вы хотите :

if [ -z `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ]; then echo 'ok'; fi
Аватара пользователя
AMDBulldozer

Re: FreeBSD - Скрипт на Shell

Сообщение AMDBulldozer »

Цитата ruslandh:



if [ -z `echo 192.168.4.15 | grep '192.168.0.[0-9]*'` ]; then echo 'ok'; fi
FreeBSD - Скрипт на Shell




В этом варианте пропущены кавычки: 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]*'`" ]
Аватара пользователя
mar

Re: FreeBSD - Скрипт на Shell

Сообщение mar »

AMDBulldozer,

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



Правда, у меня и без -z не ругается, хотя и ok не пишет
Аватара пользователя
AMDBulldozer

Re: FreeBSD - Скрипт на Shell

Сообщение AMDBulldozer »

Цитата mar:



с -z работает и без кавычек.
FreeBSD - Скрипт на Shell




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



Возможно автор исходно хотел написать что-то вроде такого:



Код:

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

echo 192.168.4.15 | grep '192.168.0.[0-9]* &> /dev/null
if (( \! $? )); then
  echo 'ok'
fi
Аватара пользователя
Kent

Re: FreeBSD - Скрипт на Shell

Сообщение Kent »

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



`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.

И что означает "192.168.0.[0-9]*"?
Аватара пользователя
AMDBulldozer

Re: FreeBSD - Скрипт на Shell

Сообщение AMDBulldozer »

Цитата Kent:



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

`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.

И что означает "192.168.0.[0-9]*"?
FreeBSD - Скрипт на Shell




Очевидно одна из строк переменная (к примеру, автор для простоты написал "echo 192.168.4.15", хотя имелось в виду "ifconfig" или какая-то другая команда, выдающая, помимо всего прочего, ip-адрес). И этот ip проверяется на принадлежность к определенной подсети.



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

Re: FreeBSD - Скрипт на Shell

Сообщение dt88 »

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

#!/bin/sh



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



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

Re: FreeBSD - Скрипт на Shell

Сообщение mar »

dt88,

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

Вернуться в «Общий по FreeBSD»