본문 바로가기
IT/리눅스 (Linux)

쉘 스크립트(Shell Script) - 확장 매개 변수

by 베베야 2022. 2. 17.
728x90

매개 변수 확장(Parameter Expansion)

테스트하기 위한 변수: string="abc-efg-123-abc"

문자 설명
${변수} $변수와 동일하지만 {} 사용해야만 동작하는 것들이 있음(예: echo ${string})
${변수:위치} 위치 다음부터 문자열 추출(예: echo ${string:4})
${변수:위치:길이} 위치 다음부터 지정한 길이 만큼의 문자열 추출(예: echo ${string:4:3})
${변수:-단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string:-HELLO})
${변수-단어} 변수 미선언시만 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string-HELLO})
${변수:=단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string:=HELLO})
${변수=단어} 변수 미선언시만 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string=HELLO})
${변수:?단어} 변수 미선언 혹은 NULL일때 단어 출력 후 스크립트 종료,(예: echo ${string:?HELLO})
${변수?단어} 변수 미선언시만 단어 출력 후 스크립트 종료(예: echo ${string?HELLO})
${변수:+단어} 변수 선언시만 단어 사용(예: echo ${string:+HELLO})
${변수+단어} 변수 선언 혹은 NULL일때 단어 사용(예: echo ${string+HELLO})
${#변수} 문자열 길이(예: echo ${#string})
${변수#단어} 변수의 앞부분부터 짧게 일치한 단어 삭제(예: echo ${string#a*b})
${변수##단어} 변수의 앞부분부터 길게 일치한 단어 삭제(예: echo ${string##a*b})
${변수%단어} 변수의 뒷부분부터 짧게 일치한 단어 삭제(예: echo ${string%b*c})
${변수%%단어} 변수의 뒷부분부터 길게 일치한 단어 삭제(예: echo ${string%%b*c})
${변수/찾는단어/변경단어} 처음 일치한 단어를 변경(예: echo ${string/abc/HELLO})
${변수//찾는단어/변경단어} 일치하는 모든 단어를 변경(예: echo ${string//abc/HELLO})
${변수/#찾는단어/변경단어} 앞부분이 일치하면 변경(예: echo ${string/#abc/HELLO})
${변수/%찾는단어/변경단어} 뒷부분이 일치하면 변경(예: echo ${string/%abc/HELLO})
${!단어*}, ${!단어@} 선언된 변수중에서 단어가 포함된 변수 명 추출(예: echo ${!string*}, echo ${!string@})

변수 테스트

쉘 스크립트 생성 : PE.sh

작성코드

#!/bin/bash

string="abc-efg-123-abc"

echo ${string}
echo ${string:4}
echo ${string:4:3}
echo ${str-HELLO}
echo ${str=HELLO}
echo ${str=HELLO}

 

결과

쉘 스크립트 실행 : ./PE.sh

abc-efg-123-abc
efg-123-abc"
efg
HELLO
HELLO
HELLO

 

나머지는 직접 테스트 해보자.

반응형
그리드형

댓글