Shell 脚本 if 语句 [: 意外操作符

Min*_*Vox 3 linux shell debian sh

我正在尝试创建一个非常简单的 shell 脚本来检测它是否以root. 出于某种原因,下面的代码Error: [: stackunderflow: unexpected operator在第 6 行产生了一个,我不知道为什么?我有一个 bash 脚本,但为了可移植性和一些教育,我想用一个 shell 脚本来做这个。

#!/bin/sh
##
# Check for root launch
#
set -e
USER="$(id -un 2>/dev/null || true)"
if [ "$USER" == 'root' ]; then
    echo "You must be a root user"
    exit 1
else
    echo 'Not root!'
    exit 0
fi
Run Code Online (Sandbox Code Playgroud)

这是./check.sh从 Debian Jessie amd64 桌面运行的。

Sai*_*Hax 8

首先,您将其标记为 bash,它是 bourne。正如 sigmalha 指出的那样,您使用了错误的运算符。使用 = 而不是 ==。

此外,您在成功时失败(退出 1),在失败时成功(退出 0)。