안녕하세요, heyjee 입니다.
리눅스 쉘 스크립트 첫 순서로 awk(오크) command를 사용해서 간단한 user management book을 구현하는 쉘 스크립트를 작성해보겠습니다.
Linux awk란?
원래는 Unix에서 처음 개발된 일반 스크립트 언어로, 텍스트 형태의 입력 데이터를 행(row)과 단어(word)별로 처리해 출력합니다. (패턴처리언어?라고도 할 수 있을거같네요?)
현 리눅스 배포판에 의해, /bin/sh와 /bin/bash 모두 사용 가능함을 알려주고 있는 것 한번 확인해보고 넘어가겠습니다.
작업해볼 디렉토리 하나 생성 후, 아래와 같이 두 파일을 vi 편집기를 통해 작성해줍니다.
info.txt
1,user1,010-1234-5678,user1@gmail.com,Seoul 2,user2,010-1111-2222,user2@gmail.com,Busan 3,user3,010-9876-5432,user3@gmail.com,Jeonju |
awk-user-management.sh
#!/bin/sh
/bin/awk \
'BEGIN {FS=",";print "User Management"} \
{idx=$1}{name=$2}{phonenumber=$3}{email=$4}{location=$5} \
{num+=1} \
{print "[" idx "] " name "} \
{print "Mobile Phone Number : " phonenumber} \
{print "E-mail : " email} \
END {print "Total " num " users in here!"}' info.txt
Line 3 ~ 9 구문 처리 코드 전체를 '' (작은따옴표) 로 wrapping |
Line 3 : FS = Field Seperator 로, 처리할 텍스트의 word를 구분하는 일종의 delimeter 개념 |
Line 4 : FS에 의해 구분된 word 들을 각각의 쉘 변수에 차례대로 매핑 |
Line 5 : 총 인원수를 출력하기 위해 매 loop마다 출력 전 카운팅 시작 |
이렇게 작성한 후, 해당 쉘파일을 실행시키니... 아래와 같이 권한 에러가 발생합니다.
혹시, root 권한에서 실행을 안시켜서 그런가하고 먼저 관리자 권한으로 실행해봤지만 역시나 될리가 없네요... (애초에 root 상에는 해당 파일들이 전무하니...)
그 다음 방법으로는 파일 자체의 권한을 살펴보기로 했습니다.
awk-user-management.sh 파일에 대해 실행 권한 (x) 가 부여되어 있지 않는 것을 확인했습니다.그렇다면, 해당 파일에 실행 권한만 부여해주면 실행이 되겠네요 ~
chmod 명령어로 700을 부여하고 확인해보니 x 권한이 부여된 것을 확인했습니다.
변경된 권한에 대해 다시 쉘파일을 실행시켜보니 정상적으로 출력하는 것을 확인할 수 있었습니다.
혹시 수정이 되어야 할 부분이 있다면 얼마든지 코멘트 대환영입니다 . 감사합니다 :)