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