我们有一个需要理解的脚本,在某些时候,我们得到了这样的语法:
if [ "$PASS_CHAINE" = "TRUE" ]
then echo "Launching DEGAGEMENT" | SLog
cd $INTERFACE_D/bin_cm/deg
$INTERFACE_D/bin_cm/deg/lance_deg 2>&1 ; echo "{@@##}RETURN_REAL_STATUS_SCRIPT=${?}" | SLog
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]
then echo "Error in DEGAGEMENT" | SLog
exit_script
fi
fi
我对这部分感到困惑echo "{@@##}"
,我不太明白。我知道脚本尝试测试lance_deg
函数的返回代码,但它不起作用,因为它将获取 echo 命令的返回代码。
我可以删除 echo 部分来解决我的问题,但重点是真正理解该{@@##}
部分的含义。
答案1
那部分:
echo "{@@##}RETURN_REAL_STATUS_SCRIPT=${?}"
只需打印:
{@@##}RETURN_REAL_STATUS_SCRIPT=x
其中最后一个x
被变量的值替换$?
。来自 bash 联机帮助页:
? Expands to the exit status of the most recently executed foreground pipeline.
这意味着$?
包含先前执行的命令的退出代码: ,它可以是;$INTERFACE_D/bin_cm/deg/lance_deg
中的数字。0
为成功和1
/或为错误而聚集。
看看这个:
$ ls file
file
$ echo $? # 0 indicates success
0
$ ls file_not_exist
ls: cannot access file_not_exist: No such file or directory
$ echo $? # >0 is an error
2