Skip to content

Bash:ParameterSubstitution

매개 변수 확장 (Parameter Expansion)에 대한 정리.

List

문자

설명

EXAMPLE

${변수}

$변수와 동일하지만 {} 사용해야만 동작하는 것들이 있음

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@}

Test code: string="abc-efg-123-abc"

대/소문자 변환

Bash 4.0 부터 다음과 같이 가능하다.

소문자:

a="TeSt VaLuE"

## 소문자
echo "${a,,}"

## 대문자
echo "${a^^}"

만약 위 문법이 안된다면 awk를 사용하자:

echo $a | awk '{print(tolower($0))}'

awk도 없다면 tr을 사용하자:

echo $a | tr [:upper:] [:lower:]

파일 이름 분리

FILE=/home/username/Project/scot.remote/20230727/cvt_pm_23-long.mp4가 있다면 "${FILE##*/}" 를 쓰면 cvt_pm_23-long.mp4 만 남는다.

See also

Favorite site

References


  1. Bash_summarizes_the_key_for_beginners.pdf