совсем ничего не писал до этого. нужно было написать небольшой скрипт который срабатывает при подключении 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 $?
работает.
где может быть ошибка?
FreeBSD - Скрипт на Shell
-
ruslandh
Re: FreeBSD - Скрипт на Shell
Наверное, вы хотите :
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]*'` ]; then echo 'ok'; fi
-
AMDBulldozer
Re: FreeBSD - Скрипт на Shell
Цитата 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]*'`" ]
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
AMDBulldozer,
да нет, с -z работает и без кавычек. Попробуйте
Правда, у меня и без -z не ругается, хотя и ok не пишет
да нет, с -z работает и без кавычек. Попробуйте

Правда, у меня и без -z не ругается, хотя и ok не пишет
-
AMDBulldozer
Re: FreeBSD - Скрипт на Shell
Цитата mar:
с -z работает и без кавычек.
Вы правы, действительно работает. Это меня удивило - я был уверен, что работать не будет. Признаю свою ошибку, наверное мне следовало проверить, прежде чем писать. Тем не менее, я всё равно считаю, что вариант с кавычками лучше - если результатов поиска grep будет больше одного, командная строка без кавычек выдаст ошибку.
Возможно автор исходно хотел написать что-то вроде такого:
Код:
с -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
Вообще не понятно о чём речь.
`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.
И что означает "192.168.0.[0-9]*"?
`echo 192.168.4.15 | grep '192.168.0.[0-9]*'` всегда будет выдавать 1.
И что означает "192.168.0.[0-9]*"?
-
AMDBulldozer
Re: FreeBSD - Скрипт на Shell
Цитата 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 проверяется на принадлежность к определенной подсети.
Но, с другой стороны, какая нам разница почему автору нужно заставить работать данный кусочек сценария? Чтобы дать ему совет, понимать назначение данного сценария совершенно не обязательно.
Вообще не понятно о чём речь.
`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
чего-то я сразу не знал что в начале файла надо писать
#!/bin/sh
чтобы на шелле интерпретировался. Заработало. Спасибо
Конечно место 129.168.4.15 будет переменная, это часть скрипта для прописывания маршрутов при подключении по pptp в зависимости от того, кто подключился
#!/bin/sh
чтобы на шелле интерпретировался. Заработало. Спасибо
Конечно место 129.168.4.15 будет переменная, это часть скрипта для прописывания маршрутов при подключении по pptp в зависимости от того, кто подключился
-
mar
Re: FreeBSD - Скрипт на Shell
dt88,
ха
Тогда надо писать, что это файл со скриптом, а то тут все, похоже, гоняли это все через командную строку без всяких шебангов 
ха
Тогда надо писать, что это файл со скриптом, а то тут все, похоже, гоняли это все через командную строку без всяких шебангов 