我们想在init 6生效之前增加一些重要的测试(在红帽子上)。
如下所示
我们在/root/..bashrc中添加函数( init )
init () {
/home/sanity.sh
[[ $? –eq 0 ]] && echo "reboot will performed" ||
echo "reboot will not performed because sanity.sh exit with error" && exit 1
Sleep 1
init $@
}但是由于一些不清楚的原因,init 6没有执行。
我的功能有什么问题?
目标-在/home/sanity.sh init 6命令之前,我们希望从脚本获得状态。
如果状态为0,则init 6将完成,如果没有,则init 6将不被允许!
发布于 2018-01-30 12:26:59
如果您的测试被重写以打印它所做的事情,而不是做它,那么首先通过:
~$> x=0
~$> [[ $x -eq 0 ]] && echo "pass1" || echo "fail1" && echo "exit"
pass1
exit然后失败:
~$> x=1
~$> [[ $x -eq 0 ]] && echo "pass1" || echo "fail1" && echo "exit"
fail1
exit因此,您需要在||之后对所有内容进行分组,以便只有当test失败时才执行exit:
~$> x=0
~$> [[ $x -eq 0 ]] && echo "pass1" || { echo "fail1" && echo "exit"; }
pass1然后,您需要使用command来实际调用init
命令实用程序将使shell将参数视为简单的命令,从而抑制第2.9.1.1节命令搜索和执行项1b中描述的shell函数查找。
https://stackoverflow.com/questions/48521261
复制相似问题