Страница 1 из 1
Ошибка при выполнении скрипта
Добавлено: 2009-03-17 20:54:03
J.Korvin
Вот хочу чтобы проверяло существут процес или нет?
А врезультате выполнения ошибка хотя процес существует.
Когда /usr/local/bin/bash то всё работает
Код: Выделить всё
!/bin/sh
if [[ `ps aux|grep natd|grep -v "grep"|awk '{print $2}'` ]]; then
echo "OK"
else
echo "DOWN"
fi
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:18:12
zg
скобка это команда, а не конструкция
как и любую другую команду её надо указывать только один раз
а вообще есть
pgrep
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:20:47
J.Korvin
zg писал(а):скобка это команда, а не конструкция
как и любую другую команду её надо указывать только один раз
а вообще есть
pgrep
А почемуже вот так работает ??
Код: Выделить всё
#!/usr/local/bin/bash
if [[ `ps aux|grep apache2|grep -v "grep"|awk '{print $2}'` ]]; then
echo "OK"
else
echo "DOWN"
fi
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:25:47
zg
J.Korvin писал(а):А почемуже вот так работает ??
потому что надо уметь читать

например
man sh и
man bash
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:27:44
J.Korvin
zg писал(а):J.Korvin писал(а):А почемуже вот так работает ??
потому что надо уметь читать

например
man sh и
man bash
Спасибо, я и сам про маны знаю я просил указать ошибку а не преподавать мне!!
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:29:30
zg
J.Korvin писал(а):Спасибо, я и сам про маны знаю я просил указать ошибку а не преподавать мне!!
этого не достаточно?
zg писал(а):скобка это команда, а не конструкция
или нада разжевать и проглотить за Вас?
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:44:03
J.Korvin
zg писал(а):J.Korvin писал(а):Спасибо, я и сам про маны знаю я просил указать ошибку а не преподавать мне!!
этого не достаточно?
zg писал(а):скобка это команда, а не конструкция
или нада разжевать и проглотить за Вас?
У меня в мане написано
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 21:50:08
zg
J.Korvin писал(а):У меня в мане написано
zg писал(а):надо уметь читать
Код: Выделить всё
zg# cat 1.sh
#!/bin/sh
if [ "$1" = "some" ]; then
echo ok
else
echo fail
fi
zg# ./1.sh asdsd
fail
zg# ./1.sh some
ok
zg#
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 22:01:38
J.Korvin
zg писал(а):J.Korvin писал(а):У меня в мане написано
zg писал(а):надо уметь читать
Код: Выделить всё
zg# cat 1.sh
#!/bin/sh
if [ "$1" = "some" ]; then
echo ok
else
echo fail
fi
zg# ./1.sh asdsd
fail
zg# ./1.sh some
ok
zg#
Спасибо вам ну сравнения и у меня пашет без проблем. А проверить существования нет.
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 22:05:16
zg
J.Korvin писал(а):А проверить существования нет.
man [
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 22:14:45
J.Korvin
zg писал(а):J.Korvin писал(а):А проверить существования нет.
man [
Уже розобрался и что так сложно было сказать что не хватает ""??
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-17 22:25:01
zg
J.Korvin писал(а):и что так сложно было сказать что не хватает ""??
видишь ли, ты тут наворотил и sh и bash, в которых [[ существенно различается, соотвественно и способ использования также различается. В sh [ - это внешняя команда, аргулменты, которой обязательно должны быть заковычены, в bash [[ - это внутряняя конструкция, в которой кавычки необязательны.
Скрипт, который приведён в первом посте нерабочий по определению

собственно это всё расписано в мане по sh, правда, читать некому

Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-18 4:19:28
Гость
zg писал(а):В sh [ - это внешняя команда, аргулменты, которой обязательно должны быть заковычены,
неа!
- /bin/[ - это внешняя команда, она *независима* от shell'а. Можно вызывать хоть из tcsh(1), хоть из самописной программы.
- [ - встроенная комманда, аналогичная test(1). Она есть и в sh(1), и в bash(1).
Код: Выделить всё
sh$ type [ [[
[ is a shell builtin
[[: not found
bash$ type [ [[
[ is a shell builtin
[[ is a shell keyword
zsh$ type [ '[['
[ is a shell builtin
[[ is a reserved word
zsh$ where [
[: shell built-in command
/bin/[
Напр., в sh(1) есть встроенные expr(1) и printf(1), но во FreeBSD они отключены; в мане нет упоминаний о
exp/
let,
wordexp. Все встроенные команды перечислены в
src/bin/sh/builtins.def. Принудительно вызвать внешнюю команду можно с помощью
command, а внутреннюю - с помощью
builtin.
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-18 9:15:29
zg
кусок мана по sh
кусок мана по башу
Код: Выделить всё
[[ expression ]]
Return a status of 0 or 1 depending on the evaluation of the
conditional expression expression. Expressions are composed of
the primaries described below under CONDITIONAL EXPRESSIONS.
Word splitting and pathname expansion are not performed on the
words between the [[ and ]]; tilde expansion, parameter and
variable expansion, arithmetic expansion, command substitution,
process substitution, and quote removal are performed. Condi-
tional operators such as -f must be unquoted to be recognized as
primaries.
разница есть?
Re: Ошибка при выполнении скрипта
Добавлено: 2009-03-18 11:19:26
Гость
zg писал(а):кусок мана по башу
в bash'е кроме двойной скобки
[[ есть еще и одинарная
[. Одинарная там больше для совместимости с sh. Тем не менее мне попадались как-то скрипты для sh, кои
*не* работали в bash.