システムユーザ/一般ユーザ別リスト作成
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