안녕하세요, heyjee 입니다.

리눅스 쉘 스크립트 첫 순서로 awk(오크) command를 사용해서 간단한 user management book을 구현하는 쉘 스크립트를 작성해보겠습니다.

 

Linux awk란?

원래는 Unix에서 처음 개발된 일반 스크립트 언어로, 텍스트 형태의 입력 데이터를 행(row)과 단어(word)별로 처리해 출력합니다. (패턴처리언어?라고도 할 수 있을거같네요?)

 

현 리눅스 배포판에 의해, /bin/sh와 /bin/bash 모두 사용 가능함을 알려주고 있는 것 한번 확인해보고 넘어가겠습니다.

/bin/sh -> 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 권한이 부여된 것을 확인했습니다.

700으로 권한 부여

 

변경된 권한에 대해 다시 쉘파일을 실행시켜보니 정상적으로 출력하는 것을 확인할 수 있었습니다.

 

 

혹시 수정이 되어야 할 부분이 있다면 얼마든지 코멘트 대환영입니다 . 감사합니다 :)

+ Recent posts