IT Log

[Linux] 매개변수 확장(Parameter Expansion) 본문

Linux

[Linux] 매개변수 확장(Parameter Expansion)

newly0513 2021. 7. 24. 01:26
728x90
반응형

 


매개변수 확장

매개변수 확장 설명
${파라미터} 파라미터 값을 반환
${#파라미터} 파라미터 길이를 반환
${#파라미터[@]} Array인 경우 [@]는 Array 길이(인덱스 수)를 반환, [숫자]는 해당 인덱스 문자열 길이를 반환
${파라미터#패턴} 파라미터 앞부분에서 처음으로 패턴과 일치하는 경우 제거
${파라미터##패턴} 라미터 앞부분에서 마지막으로 패턴과 일치하는 경우 제거
${파라미터%패턴} 파라미터 뒷부분에서 처음으로 패턴과 일치하는 경우 제거
${파라미터%%패턴} 라미터 뒷부분에서 마지막으로 패턴과 일치하는 경우 제거
${파라미터:-단어} 선언되지 않았거나, 빈 값인 파라미터인 경우 단어를 반환 (Array도 동일)
${파라미터-단어} 선언되지 않은 파라미터인 경우 단어를 반환 (Array도 동일)
${파라미터:=단어} 선언되지 않았거나, 빈 값인 파라미터인 경우 단어를 반환한 뒤, 파라미터에 단어를 대입 (Array 불가능)
${파라미터=단어} 선언되지 않은 파라미터인 경우 단어를 반환한 뒤, 파라미터에 단어를 대입 (Array 불가능)
${파라미터:+단어} 빈 값인 경우 null을 반환하고, 선언된 파라미터인 경우 단어를 반환, 
${파라미터+단어} 선언된 파라미터(NOT NULL)인 경우 단어를 반환
${파라미터:?에러} 파라미터가 선언되지 않거나 빈 값인 경우 에러를 반환
${파라미터?에러} 파라미터가 선언되지 않으면 에러를 반환 (종료상태가 0 or 1)
${파라미터:인덱스} 파라미터에서 해당 인덱스를 제거 (Array도 동일)
${파라미터:인덱스:길이}
파라미터 중 인덱스부터 길이만큼 추출 (Array도 동일)
${파라미터/패턴} 파라미터 중 첫번째로 매치되는 패턴을 제거 (Array인 경우 각각 원소에 적용)
${파라미터/패턴/단어} 파라미터 중 첫번째로 매치되는 패턴을 단어로 변경 (Array인 경우 각각 원소에 적용)
${파라미터//패턴} 파라미터에서 패턴을 전부 제거 (Array인 경우 각각 원소에 적용)
${파라미터//패턴/단어} 파라미터에서 매치되는 패턴을 전부 단어로 변경 (Array인 경우 각각 원소에 적용)
${파라미터^} 파라미터의 첫문자를 대문자로 변경 (Array인 경우 각각 원소에 적용)
${파라미터^^}
파라미터의 모든문자를 대문자로 변경 (Array인 경우 각각 원소에 적용)
${파라미터,}
파라미터의 첫문자를 소문자로 변경 (Array인 경우 각각 원소에 적용)
${파라미터,,}
파라미터의 모든문자를 소문자로 변경 (Array인 경우 각각 원소에 적용)
${!파라미터} 파라미터의 저장된 변수의 값을 반환 ( B=C > A=B > A=C ) (Array도 동일)

예시

${파라미터}

- 기본적인 사용법으로, {}를 생략해도 무관함.

- 파라미터 값을 출력하며, 연속된 문자값을 구분해주는 역할도 함.

WORD=/etc/passwd
echo $WORD
# /etc/passwd

echo before$WORDafter
# beafore

echo before${WORD}after
# before/etc/passwdafter

echo before$WORD/after
# before/etc/passwd/after

 

 

${#파라미터}

- 파라미터 유형에 해당하는 길이를 반환.

- 공백도 포함하여 길이 반환하며, Array인 경우 인덱스 수를 반환하며, @ / * 는 전체를 의미.

- Array의 경우 인덱스 표시를 입력하지 않는 경우 인덱스 0번값에 대한 길이가 반환됨.

WORD=/etc/passwd
echo ${#WORD}
# 11

arr=(etc passwd)
echo ${#arr[@]}
# 2

echo ${#arr}
# 3 > arr[0]은 etc이므로 str길이인 3을 반환

 

${파라미터#패턴}

- 파라미터 패턴과 처음으로 일치하는 부분까지 제거. (단, 앞에서부터 일치)

- 패턴은 정확히 일치해야하며, 그렇지 않을 경우 변화없음.

- * 과 ? 사용이 가능.

WORD=/etc/passwd

echo ${WORD#etc}
# /etc/passwd

echo ${WORD#/etc}
# /passwd

echo ${WORD#*etc}
# /passwd

echo ${WORD#?etc}
# /passwd

 

${파라미터##패턴}

- 파라미터 패턴과 마지막으로 일치하는 부분까지 제거. (단, 앞에서부터 일치)

- 패턴은 정확히 일치해야하며, 그렇지 않을 경우 변화없음.

- * 과 ? 사용이 가능.

 

WORD=/etc/passwd

echo ${WORD##s}
# /etc/passwd

echo ${WORD##*s}
# wd

ubuntu@ubuntu:/$ echo ${WORD#*s}
# swd

 

${파라미터%패턴}

- 파라미터 패턴과 처음으로 일치하는 부분까지 제거. (단, 뒤에서부터 일치)

- 패턴은 정확히 일치해야하며, 그렇지 않을 경우 변화없음.

- * 과 ? 사용이 가능.

WORD=/etc/passwd

echo ${WORD%/*}
# /etc

echo ${WORD#/*}
# etc/passwd

echo ${WORD#*/}
# etc/passwd

echo ${WORD%*/}
# /etc/passwd

 

${파라미터%%패턴}

- 파라미터 패턴과 마지막으로 일치하는 부분까지 제거. (단, 뒤에서부터 일치)

- 패턴은 정확히 일치해야하며, 그렇지 않을 경우 변화없음.

- * 과 ? 사용이 가능.

WORD=/etc/passwd

echo ${WORD%%/*}
#

echo ${WORD%/*}
# /etc

 

${파라미터:-단어}

- 파라미터가 선언된 경우 파라미터를 반환.

- 선언된 파라미터라도 빈값인 경우에는 단어를 반환.

- 선언되지 않은 파라미터인 경우 단어를 반환.

WORD=/etc/passwd
EMPTY=''

echo ${WORD:-NULL}
# /etc/passwd

echo ${WOR:-NULL}
# NULL > WOR이라는 변수를 선언하지 않음

echo ${EMPTY:-NULL}
# NULL > EMPTY라는 변수를 빈값으로 선언함

 

${파라미터-단어}

- 파라미터가 선언된 경우 파라미터를 반환. (빈 값 포함)

- 선언하지 않은 경우 단어를 반환.

WORD=/etc/passwd
EMPTY=''

echo ${WORD-NULL}
# /etc/passwd

echo ${WOR-NULL}
# NULL

echo ${EMPTY-NULL}
#

 

${파라미터:=단어}

- 파라미터가 선언된 경우 파라미터를 반환.

- 파라미터가 빈 값이거나, 선언하지 않은 경우에는 단어를 반환한 뒤 파라미터에 단어를 대입.

WORD=/etc/passwd
EMPTY=''

echo ${WORD:=NULL}
# /etc/passwd

echo ${WOR:=NULL}
# NULL

echo $WOR
# NULL

echo ${EMPTY:=NULL}
# NULL

echo $EMPTY
# NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments