Shell 脚本 if 语句 [: 意外运算符
Shell script if statement [: unexpected operator
我正在尝试创建一个非常简单的 shell 脚本来检测它是否 运行 为 root
。出于某种原因,下面的代码在第 6 行生成 Error: [: stackunderflow: unexpected operator
,我不知道为什么?我在 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
这是来自 Debian Jessie amd64 桌面的 运行 作为 ./check.sh
。
首先,您将其标记为 bash,这是伯恩。正如 sigmalha 指出的那样,您使用了错误的运算符。使用 = 而不是 ==。
此外,您成功时失败(退出 1),失败时成功(退出 0)。
我正在尝试创建一个非常简单的 shell 脚本来检测它是否 运行 为 root
。出于某种原因,下面的代码在第 6 行生成 Error: [: stackunderflow: unexpected operator
,我不知道为什么?我在 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
这是来自 Debian Jessie amd64 桌面的 运行 作为 ./check.sh
。
首先,您将其标记为 bash,这是伯恩。正如 sigmalha 指出的那样,您使用了错误的运算符。使用 = 而不是 ==。
此外,您成功时失败(退出 1),失败时成功(退出 0)。