如何在条件语句中退出脚本?

如何在条件语句中退出脚本?

我正在编写一个 bash 脚本,如果用户不是 root,我想退出该脚本。条件运行正常,但脚本不退出。

[[ `id -u` == 0 ]] || (echo "Must be root to run script"; exit)

我尝试过使用&&代替,;但都不起作用。

答案1

你可以这样做:

[[ $(id -u) -eq 0 ]] || { echo >&2 "Must be root to run script"; exit 1; }

(第一个语句中带有算术二元运算符的“普通”条件表达式),或者:

(( $(id -u) == 0 )) || { echo >&2 "Must be root to run script"; exit 1; }

(第一次测试的算术评估)。

注意变化()->{} - 大括号确实不是产生一个子shell。 (搜索man bash“子外壳”。)

答案2

这些命令周围的括号创建了一个子外壳。你的子 shell 会回显“必须是 root 才能运行脚本”,然后你告诉子外壳退出(尽管它已经退出,因为没有更多命令)。修复它的最简单方法可能就是使用if

if [[ `id -u` != 0 ]]; then
    echo "Must be root to run script"
    exit
fi

答案3

巴什:

[ $UID -ne 0 ] && echo "Must be root to run script" && exit 1

答案4

这可能对你有帮助,在bash中

[oracle@rac1 ~]$ which bash
/bin/bash
[oracle@rac1 ~]$ cat test1.sh
if [ `id -u` != 0 ]
then
echo "Must be root to run the script
 "
exit
fi

相关内容