셸 스크립트 (Shell Script)
[셸 스크립트] 8. IFS 설정 변경해서 /etc/passwd 파일 변수에 저장하기
여유곰
2024. 6. 23. 16:17
IFS(Internal Field Separator)는 필드를 구분하기 위한 설정값을 저장해 놓은 변수이다. 기본 설정은 공백(스페이스, 탭, 새 라인)으로 되어 있다. 예를 들어 보자. 지난 시간에 만든 간단한 스크립트 파일이다.
#!/bin/bash
while read text
do
echo "Line : $text"
done < test.txt
test.txt 파일 안에 있는 내용을 한 줄씩 $text 변수 안에 넣어 모니터에 출력하는 스크립트이다.
한 줄씩 변수에 내용을 입력할 수 있는 이유는 IFS 설정이 공백으로 되어 있기 때문이다.
IFS 설정을 다른 문자로 바꿔 준다면 파일을 불러와 내용을 자동으로 저장하는 것도 가능하다.
연습을 위해 /etc/passwd 파일을 사용해 보자.
passwd파일은 서버에 등록되어 있는 모든 계정을 저장한 파일이다.
파일 구조는 다음과 같다.
user1 : x : 1102 : 1103 : : /home/user1 : /bin/bash
사용자 이름 : 패스워드 : UID : GID : 기타 정보 : 홈 디렉토리 : 사용자가 로그인한 셸
각 항목은 콜론 : 으로 구분한다. 따라서 IFS 값을 : 으로 변경한다면 각 항목별로 변수에 저장할 수 있는 것이다.
스크립트를 작성해 보자.
#!/bin/bash while IFS=: read id password uid gid etc home shell #IFS를 : 으로 설정하고 read 뒤에 있는 변수에 순서대로 값을 입력한다. do echo "id : $id, pw : $password, uid : $uid, gid : $gid, etc : $etc, home : $home, shell : $shell" #echo를 사용해 입력받은 변수의 값을 출력한다 done < /etc/passwd #/etc/passwd파일을 읽어들인다. |
결과는 다음과 같다.