为什么以下脚本在使用 运行时会显示“意外的运算符”消息并失败sh
,但使用bash
.
#!/bin/sh
if [ $UID -ne 0 ]
then
echo "You must be root."
exit 1
else
echo "Open sesame."
exit 0
fi
答案1
并非所有 shell 都定义变量UID
。这只是 bash 和 zsh 的功能。在其他 shell 中,UID
未定义该变量,因此您的测试命令会扩展为[ -ne 0 ]
语法错误。
获取用户 ID 的一种便捷方式是使用id
公用事业。
if [ "$(id -u)" -ne 0 ]; then …