Команда exit ведет себя по-разному в Linux и HP-UX

Я работаю в проекте миграции HP-UX (B.11.23) на LINUX (Red Hat Enterprise Linux Server версии 6.5 - Сантьяго). Было несколько случаев, когда команды HP-UX не работали должным образом в Linux. Но в следующей ситуации - я столкнулся с некоторыми трудностями, чтобы найти альтернативное решение.

Следующий фрагмент кода - это просто пример из сценария, но с просьбой понять конечный результат кода.

## Assigning a text value in retval (bad path scenario)_
retval="ERROR"
if [ $retval -eq 7 ]
then
     echo "I am in " $retval
fi
exit $retval

Выполнение этого кода в LINUX ...

LINUX $> ksh --version
version         sh (AT&T Research) 93u+ 2012-08-01
LINUX $> ksh -x test12.ksh
+ retval=ERROR
+ [ ERROR -eq 7 ]
+ exit ERROR
tpl06429dat05::edwprod::/home/edwprod >echo $?
0
# look here return code of above executed script is 0_

Теперь выполнили тот же код в HP_UX

UNIX $> uname -a
HP-UX ipeip06 B.11.23 U ia64 ******** unlimited-user license
UNIX $> strings /bin/ksh | grep Version | tail -2
@(#)Version 11/16/88
UNIX $> ksh -x test12.ksh
+ retval=ERROR
+ [ ERROR -eq 7 ]
test12.ksh[3]: ERROR: bad number
+ exit ERROR
test12.ksh[8]: ERROR: bad number
UNIX $> echo $?
1
# Look here, return code of above executed code is 1

В Linux команда "exit" вообще не выполняется, так как у меня передан неверный параметр (строка), но в HP -UX нет проблем - команда "exit" с неправильным параметром была выполнена и сообщает нам, что это неправильная команда (echo $?) В этом сценарии. И этот код возврата очень важен, поскольку на основе этого кода возврата ($?) Мы решаем, был ли скрипт выполнен успешно (0) или нет.

Я понимаю, что если мы доработаем код, проблема может быть решена. Но здесь это немного сложно, так как я имею дело с почти 15К или более таких скриптов, написанных на HP_UX. Есть ли возможность что-то изменить на уровне ОС (изменение пакетов / параметров) .. Какие изменения на уровне системы необходимы?

С другой стороны, версии ksh отличаются и ведут себя по-разному. Так что лучше избегать этого ответа.

-1
24.08.2016, 09:46
0 ответов

Теги

Похожие вопросы