Проверка значения. Bash. {SOLVED}
DCrystal 11 января, 2007 - 13:30
Есть скрипт.
Нужно проверить равно ли значение переменной нулю.
if [ $SMTH -eq 0 ]
так не пашет, ибо баш говорит, что
Цитата:
line 5: [: -eq: unary operator expected
»
- Для комментирования войдите или зарегистрируйтесь
Тире перед eq
Тире перед eq убери. Если собрался "скрипеть" обрати внимание на /etc. Много примеров.
grep eq /etc/* -r | grep if
Quote: line 5: [: eq: binary
Извинения за
Извинения за предыдущий пост.
Вот что работает (пробелы после скобок)
if [ 1 -eq 1 ]; then
echo "hello"
fi
а без тире
eq: binary operator expected
да скобки я
да скобки я ставил. чтобы не было вопросов, вот код.
пробел убери
пробел убери между ] и ;
Вот кусок из моего скрипта для мониторинга состояния сети:
пробел
пробел убрал.
не помогло. все равно вылазит :(
Возьми
Возьми аргументы в ковычки(")
Вылазит оно по тому, что переменная ПУСТАЯ
Re: Возьми
чето я туплю (((
до меня только че дошло, что если сети нету, то
ping -c 3 -s 100 ya.ru
будет выдавать не НОЛЬ, а
теперь вот думаю, че делать.
я так понимаю, что при таком раскладе в $PING записыватся ничего не будет?
хм...может пойти от обратного? ..
собственно,
собственно, получилось :)
все-таки пошли от противоположного ;)
работает на ура, вот только один эстетический момент:
можно подавить вывод башем ошибок на экран в скрипте?
дело в том, что если сети нету, то ошибка
полюбому вылазит, ибо переменная пустая )
просто некрасиво как-то =)
Перенаправь
Перенаправь вывод ошибок в /dev/null
2> /dev/null
Хм. А то что
Хм. А то что разультат выполнения пинг таким образом получаете красиво?!
ping ...
if [ $? -ne 0 ];then ...
Re: Хм. А то что
недогнал вопроса :(
Вместо той
Вместо той сложной конструкции, проверяющей вывод ping, проверять его код возврата. Он 0 если пропинговалось и не 0, если пинги не ходят.
ping my.host
if [ $? -ne 0 ];then
Re: Вместо той
?
Ёперный театр!
Ёперный театр!
control-c control-v когда освоим?
$?
И перечитать man bash!
сорри, я думал
сорри, я думал что знак вопроса - это моя переменная ))
Ну все, тогда решено. :)
Всем спасибо =)
Собака зарыта не там)
Пусть с опозданием на 5 лет, но все же)
>>>PING=`ping -c 3 -s 1000 ya.ru |grep received | awk -F, '{print $2}' |awk '{print $1}' `
Здесь переменной PING присваивается значение символьного типа. Чтобы явно указать на то, что тип переменной - числовой, необходимо использовать следующую конструкцию:
PING=$[`ping -c 3 -s 1000 ya.ru |grep received | awk -F, '{print $2}' |awk '{print $1}' `]