我们想在init 6生效之前添加一些重要的测试(在redhat上)
如下所示
我们在/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 没有执行
我的功能出了什么问题?
目标 - 在 init 6 命令之前,我们希望从 /home/sanity.sh 获取状态 脚本
如果状态为0,那么 init 6 将完成,否则将不允许init 6!
答案 0 :(得分:0)
如果你的测试被重新编写以打印它的作用,而不是这样做,首先传递:
~$> 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
因此您需要在||
之后对所有内容进行分组,以便仅在exit
失败时执行test
:
~$> x=0
~$> [[ $x -eq 0 ]] && echo "pass1" || { echo "fail1" && echo "exit"; }
pass1
然后,您需要使用command
来实际调用init
:
命令实用程序将使shell将参数视为一个简单命令,从而抑制第2.9.1.1节“命令搜索和执行”中第1b项中描述的shell函数查找。