Почему моя функция в оболочке Unix всегда возвращает 0? - PullRequest
0 голосов
/ 21 сентября 2018

В моем скрипте bkp_hot-rout.ksh я хочу проверить код возврата команды mv, используя функцию, которая отображает OK или WARN (функция check_return_warn).

Проблема в том, что код возврата всегда равен 0, даже еслиЯ удаляю исходный файл до mv.

Сценарий bkp_hot-rout.ksh

#Load functions
export FPATH=/app/rl/exploit/functions
${FPATH}/init

rm ${HRFILE}
mv ${HRFILE} ${HRFILE}"_"${DATE_TAG}
check_return_warn "${MSG_ETAPE} : Horodatage du fichier des HR (commande mv)"

Файл инициализации

#!/bin/ksh

init()
{
        for file in `ls -1 $FPATH`
        do
                . ${FPATH}/$file
        done
}

check_return_warn file

#!/bin/ksh
check_return_warn ()
{
RCwritelog=$?
ETAP_NOM=$1
MSG_ERR=$(echo "$2" | tr '\n' ' ')

if [ ${RCwritelog} -ne 0 ]; then
   log_write_warn "${ETAP_NOM} : Echec. ${MSG_ERR}" "${RCwritelog}"
else
   log_write_ok "${ETAP_NOM} : Termin▒ avec succ▒s."
fi
return ${RCwritelog}
}

В отладке мы видим, что тест всегда: if [0 -ne 0];затем

Все функции находятся в одном каталоге: / app / rl / exploit / functions

Другие функции не имеют этой проблемы.check_return_warn был создан путем копирования check_return_error с тем же кодом, кроме вызова log_write_error вместо log_write_warn Если я использую check_return_error для проверки KO mv, код возврата <> 0

Можете ли вы взглянуть?Спасибо

Дэвид

...