システムユーザ/一般ユーザ別リスト作成

declareコマンドで配列を宣言し、/etc/passwdのuseridとusernameをセット。
for文でuseridが100以下と以上に分け、それぞれファイルに書き込む。
コマンド1 && コマンド2 || コマンド3は
コマンド1が真の場合コマンド2を実行し、偽の場合はコマンド3を実行する。
${#username[*]}は配列にセットされている変数の数。

#!/usr/bin/bash
declare -a username userid
username=($(cut -d ":" -f1 /etc/passwd))
userid=($(cut -d ":" -f3 /etc/passwd))
for (( i = 0; i < ${#username[*]}; i++ )); do
    test ${userid[$i]} -lt 100 \
    && echo -e ${userid[$i]}'\t'${username[$i]} \
    >> $$systemuserlists.txt \
    || echo -e ${userid[$i]}'\t'${username[$i]} \
    >> $$normaluserlists.txt
done 

listfilename=`date +"%Y%m%d"`userlist.txt
systemuser=`wc -l $$systemuserlists.txt | cut -d" " -f1`
normaluser=`wc -l $$normaluserlists.txt | cut -d" " -f1`
exec >> $listfilename 
echo "Hostname   :$HOSTNAME" 
echo "Date       :`date`" 
echo 
echo "System user:$systemuser accounts" 
sort -n $$systemuserlists.txt
echo 
echo "Normal user:$normaluser accounts"
sort -n $$normaluserlists.txt
rm -f $$systemuserlists.txt $$normaluserlists.txt