你猜對了,BASH[$NF]++是用來計數的。
BASH[$NF] 是awk的自定義陣列,如果陣列中原來沒有該索引,則會建立該索引並賦值為空(數值運算時則為0)。
在該例中:比如第一個為 /bin/shell 陣列BASH中原來沒有 /bin/shell的索引,就建立一個,並++值為1;第二個仍然為/bin/shell 那麼已經存在該索引直接++值為2;第三個為/usr/bin/zsh BASH中沒有該索引,就建立一個,並開始計數 ......所以該條語句即為:讀取/etc/passwd中以:分割的第七段(使用者的預設shell),並對不同的shell進行計數。
關於A BASH[A],我想你知道BASH為陣列後就不難理解了,A為索引,BASH[A]為索引A的值
END是awk的一種模式,在所有應該處理的文字處理完後執行END{}中的動作,相應的還有BEGIN{}在處理文字前的執行動作。在END中使用for遍歷陣列輸出/etc/passwd檔案中的使用者不同的預設shell的個數
你猜對了,BASH[$NF]++是用來計數的。
BASH[$NF] 是awk的自定義陣列,如果陣列中原來沒有該索引,則會建立該索引並賦值為空(數值運算時則為0)。
在該例中:比如第一個為 /bin/shell 陣列BASH中原來沒有 /bin/shell的索引,就建立一個,並++值為1;第二個仍然為/bin/shell 那麼已經存在該索引直接++值為2;第三個為/usr/bin/zsh BASH中沒有該索引,就建立一個,並開始計數 ......所以該條語句即為:讀取/etc/passwd中以:分割的第七段(使用者的預設shell),並對不同的shell進行計數。
關於A BASH[A],我想你知道BASH為陣列後就不難理解了,A為索引,BASH[A]為索引A的值
END是awk的一種模式,在所有應該處理的文字處理完後執行END{}中的動作,相應的還有BEGIN{}在處理文字前的執行動作。在END中使用for遍歷陣列輸出/etc/passwd檔案中的使用者不同的預設shell的個數