강좌 & 팁
글 수 2,412
2014.12.11 21:14:11 (*.134.169.166)
38893
문제는, bash스크립트를 사용시에, '1 2 3'과 같은 리스트가 있을 때 가장 앞(또는 가장 뒤)에 있는
아이템을 추출하기 위해서는 어떻게 할 수 있을까하는 것이다.
bash변수치환에서 '#'을 이용해서 문자열의 필요한 부분을 추출할 있는 기능이 있다.
A라는 변수가 있을 때,
a) ${A#패턴}은 앞쪽의 '패턴'에 매칭되는 부분을 제외(!)한 나머지 서브스트링을 의미한다.
b) ${A##패턴}은 앞쪽의 '패턴'에 (최대한) 매칭되는 부분을 제외(!)한 나머지 서브스트링을 의미한다.
c) ${A%패턴}은 뒤쪽의 '패턴'에 매칭되는 부분을 제외(!)한 나머지 서브스트링을 의미한다.
d) ${A%%패턴}은 뒤쪽의 '패턴'에 (최대한) 매칭되는 부분을 제외(!)한 나머지 서브스트링을 의미한다.
예를 들어,
${the_list#* }라는 것은 the_list라는 변수에서 앞쪽에서 가장먼저 나오는 빈칸' '까지의 문자열을 제외한
나머지 부분이 되며, the_list가 '1 2 3'일 경우 그 값은 '2 3'이 된다.
${the_list%% *}은 the_list라는 변수의 뒤쪽에서 시작해서 꺼구로 거슬러 올가가면서 나오는 마지막 빈칸까지의 서브스트링을
제외한 나머지가 되며, the_list가 '1 2 3'일 경우 그 값은 '1'이 된다.
bash스크립트를 이용해서 큐를 구현해보면, 다음과 같이 구현할 수 있다.
다음과 같이 큐를 시혐해 볼 수 있다.
결과화면은 다음과 같다.