Перейти к содержанию
    

Можно написать такой скрипт скрипт?

Все под QNX4.25 (думаю разницы в плане скритов от линуха нет).

Имею утилиту (и исходники) которая проверяет контрольные суммы конфигурационных ПЗУ.

Имею утилиты прграммирования этих ПЗУ.

Как сделать чтобы анализируя значение возвращаемое утилитой анализа CSUM, запускалась на выполнение та или иная утилита программирования.

 

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

Но дальше ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все под QNX4.25 (думаю разницы в плане скритов от линуха нет).

Имею утилиту (и исходники) которая проверяет контрольные суммы конфигурационных ПЗУ.

Имею утилиты прграммирования этих ПЗУ.

Как сделать чтобы анализируя значение возвращаемое утилитой анализа CSUM, запускалась на выполнение та или иная утилита программирования.

 

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

Но дальше ...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А причем тут int main()? Речь об скриптах.

Дык, а как программа должна возвращать значение завершения своей работы (интересует не просто ошибка или нет)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у скриптов вроде нет 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 - списки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в 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").

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

виноват.

в case нужно тестировать не переменную (в которую попадает вывод), а результат выполнения, который заносится в $?

 

variable=$(cfggray)

case $? in

1)

 

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

Лучше, держите нужные вещи в собственных переменных:

 

variable=$(cfggray)

cfggray_result=$?

case $cfggray_result...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы.

При варианте скрипта:

variable=$(cfggray)

cfggray_result=$?

case $cfggray_result...

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

 

А вот если:

cfggray

cfggray_result=$?

...

 

Тогда все ОК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В первом варианте нет вывода. Так и должно быть.

++++ весь вывод ушел в переменную, вы ее можете распечатать на экран или

++++ в файл - утилита больше вызываться не должна

У меня первый вариант работает хорошо: вызывается утилита (без вывода) и возвращенное значение можно выловить через $?

Почему у вас не прошел вызов или не вернулось значение - не понимаю.

Впрочем, вы нашли способ получить данные.

++++ чтобы проверить, вызвалась ли утилита - печатайте из нее в файл - так виднее

 

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

 

ззы cygwin, bash-2.05b

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...