如何在重启Linux机器之前添加条件

时间:2018-01-30 12:16:01

标签: linux bash alias redhat

我们想在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!

1 个答案:

答案 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函数查找。