${variable:-word}
$variable
이 존재하지 않거나 null
인 경우 word
로 치환됩니다.
${variable:=word}
$variable
이 존재하지 않거나 null
일 경우 word
값을 $variable
에 대입하고 치환합니다.
${varaible:?word}
$variable
이 존재하지 않거나 null
일 경우 word
값을 stderr
에 출력하고 종료합니다.
${variable:+word}
$variable
이 존재하지 않거나 null
일 경우 아무것도 하지 않습니다. 이외의 경우 word
로 치환합니다
${variable:offset:length}
파이썬의 slice
와 동일하게 동작합니다. 단, step
이 존재하지 않습니다. 음수로 offset, length를 지정할 때에는 :
으로부터 공백을 추가 하는것을 권장합니다(:-
확장과 혼동할 수 있기 때문).
${!prefix*}
${!prefix@}
prefix
로 시작하는 변수들을 IFS
변수로 구분하여 확장합니다.
${!variable[*]}
${!variable[@]}
$variable
이 배열 변수일 경우 원소들을 IFS
변수로 구분하여 확장합니다. 배열이 아니거나 null일 경우 0
으로 확장합니다.
${variable#match} # Shortest
${variable##match} # Longtest
# e.g.)
FOO="foobarbaz"; echo ${FOO#*ba}
rbaz
FOO="foobarbaz"; echo ${FOO##*ba}
z
앞에서 부터 match와 동일한 부분을 삭제하여 확장합니다. #
은 가장 짧은 경우, ##
은 가장 긴 경우를 삭제합니다.
${variable%match}
${variable%%match}
# e.g.)
FOO="foobarbaz"; echo ${FOO%ba*}
foobar
FOO="foobarbaz"; echo ${FOO%%ba*}
foo
#
와 같이 match
되는 부분을 삭제하여 확장하지만, 뒤에서 부터 확인합니다.
${variable/pattern/word}
pattern
을 word
로 치환하여 확장합니다. 만약 pattern
이 /
으로 시작할 경우 모든 패턴을 word
로 치환합니다.