LinuxForum.Fans
Тема

Непонятка по bash

Автор: astalavista 31 сообщений 4599 просмотров
#114611

Имеется скрипт.
К примеру - Фрагмент тела -

text
#! /bin/bash
cd /etc/init.d
`./network restart`

Но при выполнении в консоль выдает -

text
[1Awaiting[1AwaitingSuSEfirewall2: Setting up rules from /etc/sysconfig/SuSEfirewall2 ...
SuSEfirewall2: Warning: no default firewall zone defined, assuming 'ext'                 
SuSEfirewall2: using default zone 'ext' for interface wmaster0                           
SuSEfirewall2: batch committing...                                                       
SuSEfirewall2: Firewall rules successfully set                                           
./file1: line 3: Shutting: команда не найдена  

Непонятно почему ругается на 3 строку, что и есть - network restart !!!! Хотя сетка рестартуется.
И также, думал, что если перенаправлю ввод в null (т.е. ./network restart > /dev/nul), то ничего не будет выдавать, но исчезает только - /file1: line 3: Shutting: команда не найдена...
Возможно чтобы ничего не выводилось в консоль??? И что это за ругательство на команду Shutting??

#114620

astalavista, не понятен пробел — #! /bin/bash, его быть не должно. Так же не понятна конструкция

text

cd /etc/init.d
`./network restart`

Почему бы просто не сделать

text

/etc/init.d/network restart

P.S. А что должен делать этот скрипт? Как показывает опыт, все «велосипеды» уже изобретены wink
P.S.S. Не плохо бы глянуть на весь скрипт целиком.

#114623

astalavista,
А содержимое файла network не просматривали? Вдруг ругань из-за его содержимого?

#114625
Hvzh написал:
А содержимое файла network не просматривали? Вдруг ругань из-за его содержимого?

IMHO, конструкция `./network restart` неправильна. В ней предлагается вывести результат выполнения команды network restart, а с учётом того, что она помещена в скрипт, то и запустить этот вывод.

#114634

Lupo Alberto,
Согласен, команда неправильна, но вот это

text
./file1: line 3: Shutting: команда не найдена  

этим не объясняется...

#114638
Hvzh написал:
этим не объясняется...

Как раз и объясняется: скрипт пытается запустить то, что ему вывело `./network restart`. Если посмотреть содержимое файла /etc/init.d/network можно будет рассуждать более предметно.

#114639
text
/etc/init.d/network restart

Да, когда сделал строку так то ошибка исчезла!
Спасибо!
А возможно выполнить команду network restart без вывода результата в консоль??? т.е. без этих строк

text
Setting up rules from /etc/sysconfig/SuSEfirewall2 ...
SuSEfirewall2: Warning: no default firewall zone defined, assuming 'ext'                 
SuSEfirewall2: using default zone 'ext' for interface wmaster0                           
SuSEfirewall2: batch committing...                                                       
SuSEfirewall2: Firewall rules successfully set 

И если я хочу после /etc/init.d/network restart , вывести что то через echo но только после того как network restart сделается - - как это сделать? паузу может как то на пару секунд поставить? или есть что то другое?

#114643
astalavista написал:
А возможно выполнить команду network restart без вывода результата в консоль??? т.е. без этих строк
text

/etc/init.d/network restart > /dev/null 2>&1
#114644

Lupo Alberto,
Да, все верно. Проблема в кавычках, только что проверил

#114645
astalavista написал:
И если я хочу после /etc/init.d/network restart , вывести что то через echo но только после того как network restart сделается - - как это сделать?
text

/etc/init.d/network restart > /dev/null 2>&1 && echo "All OK"
#114646

А строка про Shutting - это неправильно интерпретирующаяся при наличии кавычек команда echo

#114647
Lupo Alberto написал:
/etc/init.d/network restart > /dev/null 2>&1 && echo "All OK"

А вот с этим я бы не согласился :D :D А вдруг не Ок? :D

#114650
Hvzh написал:
А вдруг не Ок? big_smile
text

/etc/init.d/network restart > /dev/null 2>&1 && echo "All OK" || echo "Галактеко опасносте!"
#114651

Большое спасибо!
Получилось.
Задание было сделать простой net switch по смене настроек сетевых интерфейсов. А что Вы там говорили по поводу "велосипедов" ..... ??

#114657
astalavista написал:
А что Вы там говорили по поводу "велосипедов" ..... ??

Если бы описали более подробно задачи скрипта, может быть и «велосипед» нашёлся wink
Во многих дистрибутивах есть скрипты, запускающиеся при включении и отключении определённого сетевого интерфейса.

#114658

... и скажите еще как паузу оформить на определенное количество секунд

#114661
astalavista написал:
... и скажите еще как паузу оформить на определенное количество секунд
text

/etc/init.d/network restart > /dev/null 2>&1 && sleep 5; echo "All OK" 
#114664

Спасибо! То что надо!

#114886

А еще непонятка одна -

text
#!/bin/bash
w1=`ifconfig eth0 | grep Interrupt`
w2=Interrupt:19
if [ "w1" = "w2" ]; then
echo "Ok!"
else
echo "NO"
fi

Значение Interrupt:19 совпадает, но не работает if , пишет NO. В чём ошибка?

#114893

"w1" == "w2"
И еще я неуверен в необходимости наличия кавычек

Войдите или зарегистрируйтесь, чтобы ответить.