为什么我在Unix Shell中的函数总是返回0?

时间:2018-09-21 08:12:17

标签: function shell unix ksh

在我的脚本bkp_hot-routes.ksh中,我想使用显示OK或WARN的函数(函数check_return_warn)来测试mv命令的返回码。

问题是即使我在mv之前删除源文件,返回码也始终为0。

脚本bkp_hot-routes.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文件

#!/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测试mv的KO,则返回码为<> 0

可以请你看看吗?谢谢

大卫

0 个答案:

没有答案