2016-08-30 33 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中使用大寫的變量名 - 完全是爲了防止這種情況。

相關問題