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

5

我正试图创建一个非常简单的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运行的。


6
将"=="替换为"="。 - sigmalha
谢谢你的回复 :) - stackunderflow
顺便提一下:您正在覆盖USER环境变量。因此,强烈建议不要使用大写变量名! - gniourf_gniourf
啊,谢谢你。我会相应地调整脚本。 - stackunderflow
1个回答

11

首先,你把这个标记为bash,但它是bourne shell。正如sigmalha指出的,你使用了错误的运算符。请使用=而不是==。

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


谢谢,抱歉.. 我想我还在学习中。 - stackunderflow
没问题,我们都曾经是初学者。 - SaintHax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接