我有一个脚本需要使用su权限才能运行,但是会失败的那个命令在脚本的最后执行,因此我希望在脚本前面进行干净的测试,以确定脚本是否需要SU权限。
对于bash、sh和/或csh,有什么好的方法可以实现这一点?
我有一个脚本需要使用su权限才能运行,但是会失败的那个命令在脚本的最后执行,因此我希望在脚本前面进行干净的测试,以确定脚本是否需要SU权限。
对于bash、sh和/或csh,有什么好的方法可以实现这一点?
bash/sh:
#!/usr/bin/env bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] ; then
echo "I AM ROOT, HEAR ME ROAR"
fi
csh:
#!/bin/csh
if ( `id -u` == "0" ) then
echo "I AM ROOT, HEAR ME ROAR"
endif
/bin/sh
) 中无法运行。[[
命令和 EUID
变量是 Bash 特有的,它们不在 POSIX 规范中定义。为了让代码能在 POSIX shell 中运行,需要使用 POSIX-compliant 的语法和命令。 - Richard Hansen您可以在脚本开头添加类似以下内容的代码:
#!/bin/sh
ROOTUID="0"
if [ "$(id -u)" -ne "$ROOTUID" ] ; then
echo "This script must be executed with root privileges."
exit 1
fi