2016-08-30 51 views
-1
#!/bin/bash 
GROUPS=$(cut -d: -f1 /etc/group) 
echo "$GROUPS" 

此代码给了我1000的输出,如果我是一个普通的用户或0,如果我的根,在执行相同的命令(cut -d: -f1 /etc/group)返回所有列表机器上可用的组。我也试过grep "" /etc/group,但是产生了相同的结果。我不在这里?列表,经由bash脚本计算机上的所有组

+5

注意'$ GROUPS'是一个包含一些信息的内部变量 – fedorqui

+0

为什么要把这个内容变成一个变量呢?如果您只是在没有任何重定向的情况下运行该命令,则内容将直接转到标准输出,正是“echo”发送它的位置。 (但是,如果*要捕获到变量中,请使用小写名称来避免与对shell或操作系统有意义的变量发生冲突)。 –

+0

感谢您在这些评论中提供的答案。我并不需要将它捕获到一个变量中,但我同时初始化了许多其他变量,并认为它们应该一起使用,以使代码看起来更整齐。我将从现在开始使用小写字母。 – shaks

回答

2

正确的方法是getent group|cut -d: -f1,因为还有一些认证方法比/ etc/group更多。例如sql,ldap等... 而且不推荐在shellscript中使用大写的变量名 - 完全是为了防止这种情况。

相关问题