Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Можно написать такой скрипт скрипт?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
3.14
Все под QNX4.25 (думаю разницы в плане скритов от линуха нет).
Имею утилиту (и исходники) которая проверяет контрольные суммы конфигурационных ПЗУ.
Имею утилиты прграммирования этих ПЗУ.
Как сделать чтобы анализируя значение возвращаемое утилитой анализа CSUM, запускалась на выполнение та или иная утилита программирования.

Насколько я понимаю, надо объявлять int main(), и выходить с return X.
Но дальше ...
andrew_b
Цитата(3.14 @ Jul 6 2005, 12:51)
Все под QNX4.25 (думаю разницы в плане скритов от линуха нет).
Имею утилиту (и исходники) которая проверяет контрольные суммы конфигурационных ПЗУ.
Имею утилиты прграммирования этих ПЗУ.
Как сделать чтобы анализируя значение возвращаемое утилитой анализа CSUM, запускалась на выполнение та или иная утилита программирования.

Насколько я понимаю, надо объявлять int main(), и выходить с return X.
Но дальше ...

А причем тут int main()? Речь об скриптах. Хотя не знаю, как там в QNX, но вот в Linux bash-скрипт, на первый взгляд, достаточно тривиален.
3.14
А причем тут int main()? Речь об скриптах.
Дык, а как программа должна возвращать значение завершения своей работы (интересует не просто ошибка или нет)?
id_gene
у скриптов вроде нет main -а
каждая команда выполняется, и обработчик переходит к следующей, если нет ошибки

в bash скрипте вы занесёте результат выполения утилиты в переменную,
Код
variable=`launch_util`  
или
variable=$(launch_util)

и потом можете сравнить эту переменную, например, в case
Код
case "$variable" in
"$condition1" )
command...
;;
"$condition2" )
command...
;;
esac

в зависимости от возвращаемого значения можно поставить if
или завести список command1 && command2 && command3
или command5 || command6 || command7

на английском посмотрите bash tutorial
глава 7 - сравнения if
глава 10 - сравнения case
глава 25 - списки
3.14
Цитата(id_gene @ Jul 6 2005, 15:14)
в bash скрипте вы занесёте результат выполения утилиты в переменную,
Код
variable=`launch_util`  
или
variable=$(launch_util)


Что то так не прходит.
Создаю утилитку, которая сначала выводит на экран "Test" и заканчивается return 2 (пробовал и exit(2))
создал скрипт:
Код
variable=$(cfggray)
echo $variable

case "$variable" in
1 ) echo "first";;
2 ) echo "second";;
"Test" ) echo "No good";;
* ) echo "other";;
esac

В результате работы получается так что присваивается не значение 2, а текст выводимый утилитой ("Test").
id_gene
виноват.
в case нужно тестировать не переменную (в которую попадает вывод), а результат выполнения, который заносится в $?

variable=$(cfggray)
case $? in
1)

В переменную $? всегда заносится результат выполнения последней команды, так что будте аккуратны, потому что она при каждом действии переопределяется -и после сравнения тоже.
Лучше, держите нужные вещи в собственных переменных:

variable=$(cfggray)
cfggray_result=$?
case $cfggray_result...
3.14
Спасибо за советы.
При варианте скрипта:
variable=$(cfggray)
cfggray_result=$?
case $cfggray_result...
Возвращается всегда 0, причем вывод на экран происходит только если после объявления переменной вызвать echo $variable (так и должно быть?).

А вот если:
cfggray
cfggray_result=$?
...

Тогда все ОК.
id_gene
В первом варианте нет вывода. Так и должно быть.
++++ весь вывод ушел в переменную, вы ее можете распечатать на экран или
++++ в файл - утилита больше вызываться не должна
У меня первый вариант работает хорошо: вызывается утилита (без вывода) и возвращенное значение можно выловить через $?
Почему у вас не прошел вызов или не вернулось значение - не понимаю.
Впрочем, вы нашли способ получить данные.
++++ чтобы проверить, вызвалась ли утилита - печатайте из нее в файл - так виднее

зы Если вы echo $variable вставили сразу после объявления - то у вас в $? попадает результат вызова echo - (success == 0).

ззы cygwin, bash-2.05b
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.