내부 필드 구분자인 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