[Shell script]IFSによる/etc/passwd情報パケット

3116 ワード

内部フィールド区切り記号IFSを定義し、/etc/passwdの情報をグループ化し、行ごとに出力します.
まず、/etc/passwdの内容を見てみましょう.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
hyeob:x:1000:1000:hyeob:/home/hyeob:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
git:x:1001:1001::/home/git:/usr/bin/git-shell
前述したように、各ユーザは줄바꿈に基づいて区別される.
ユーザ情報は:に基づいている.
ユーザーごとに파싱のスクリプトを作成しましょう.
$ cat test1
#!/bin/bash
IFS_OLD=$IFS
IFS=$'\n'
for user in $(cat /etc/passwd | tail -3)
do
        echo "user information: $user"
        IFS=:
        for info in $user
        do
                echo $info
        done
        echo ""
done
IFS=$IFS_OLD

$ ./test1
user information: hyeob:x:1000:1000:hyeob:/home/hyeob:/bin/bash
hyeob
x
1000
1000
hyeob
/home/hyeob
/bin/bash

user information: lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
lxd
x
998
100

/var/snap/lxd/common/lxd
/bin/false

user information: git:x:1001:1001::/home/git:/usr/bin/git-shell
git
x
1001
1001

/home/git
/usr/bin/git-shell