Search

2017년 1월 8일 일요일

[Bash] 파라미터를 받아서 특정 문자를 기준으로 자르기. (parameter split)

#1. 들어가기
bash shell을 이용해 batch작업을 짜다보면 파라미터로 받은 값을 처리하고 싶을 때가 있다.
예를들어, 파라미터로 --yyyymm=201701 이라는 값을 받았을 때, '='을 기준으로 좌,우의 값을 분리하여 사용이 필요할 때가 있다.


#2. bash에서 파라미터 값 자르기
아래와 같은 쉘 스크립트(test.sh)를 하나 만들어서 파라미터를 넣어 실행해보자.
test.sh 코드
input=$1
echo ${input##*=}
echo ${input%%=*}

실행.
[martin@OSKAR01 ~]$ sh test.sh --yyyymm=201701

파라미터로 넣은 --yyyymm=201701이 --yyyymm과 201701로 분리된 것을 볼 수 있다.
간단하게 설명하면 다음과 같다.

#*=   는 문자열의 좌측부터 시작해 맨 처음으로 찾은 =까지의 모든 문자를 제거한다.
##*= 는 문자열의 좌측부터 시작해 맨 마지막으로 찾은 =까지의 모든 문자를 제거한다.
%=*   는 문자열의 우측부터 시작해 맨 처음으로 찾은 =까지의 모든 문자를 제거한다.
%%=* 는 문자열의 우측부터 시작해 맨 마지막으로 찾은 =까지의 모든 문자를 제거한다.

자세한 설명은 아래의 사이트를 참조하자.
http://wiki.bash-hackers.org/syntax/pe


댓글 없음:

댓글 쓰기