为什么 sh 显示错误而 bash 不显示错误?

为什么 sh 显示错误而 bash 不显示错误?

为什么以下脚本在使用 运行时会显示“意外的运算符”消息并失败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 …

相关内容