我希望我的剧本回落到shell,如果用户不是根,我想退出代码为5如何使用特定的代码在特定语句为假时退出脚本(结束它的运行)?
who=`whoami`
if [ echo $who != "root"];
then exit (5)
else
我到底做错了什么?
我希望我的剧本回落到shell,如果用户不是根,我想退出代码为5如何使用特定的代码在特定语句为假时退出脚本(结束它的运行)?
who=`whoami`
if [ echo $who != "root"];
then exit (5)
else
我到底做错了什么?
试试这个:
who=`whoami`
if [ $who != "root" ]; then
exit 5
else
反引用'whoami';) –
确实,感谢您纠正@gniourf_gniourf。编辑修复它。当我写这篇文章的时候,我还看到你编辑了你的评论并提供了所有的解释。 +1给你。 – vee
vinoqadhikary的答案是正确的。 gniourf_gniourf的评论也纠正了给出答案中的一个问题。
为什么你的代码有问题:
的[
实际上是我的系统上的一个外部命令:/usr/bin/[
既然是命令,它希望周围有白色的空间,所以外壳可以解析它。
type [
会告诉你你的系统上有什么。
当你把里面的东西括号这样的:(stuff in here)
两点需要注意:
stuff in here
将作为一个命令来执行。 5不是一个命令。
下一步:如果你对stuff in here
有一个真正的shell命令的理解,那么shell就会将它作为子进程来运行 - 而不是你想要的。
in [tag:bash],'['不是外部命令,它是一个内建函数:''help ['to be convinced。 –
另外,尝试'echo(echo)'。圆括号内的“echo”是一个真实的命令,但该行仍然会产生错误。 –
@gniourf_gniourf - 真的吗?我认为不是:'$ bash --version GNU bash,版本4.1.10(4) - 发布(i686-pc-cygwin) 版权所有(C)2009自由软件基金会,公司 许可证GPLv3 +:GNU GPL版本3或更高版本
你也可以利用$(...)
这将在子shell中运行命令,从而消除了额外的变量来存储有效的uid。
if [ $(whoami) != "root" ]; then
exit 5;
else
...
fi
或者,您可以使用id
得到同样的信息:
if [ $(id -un) != "root" ]; then
exit 5;
else
...
fi
不妨直接使用'((UID!= 0))&& exit 5':不需要外部进程! –
对于root用户来说,不需要计算数字GID,那么为什么不呢! – devnull
刚刚摆脱了括号:'退出5'。另外,在''''之前留出一个空格,并且不要使用'echo':'if [$ who!=“root”];'(在''''之前的空格]“)。投票结果太局部。 –