Bash 매개변수 확장
Programming${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
로 치환합니다.
'Programming' 카테고리의 다른 글
pre-emptive multitasking vs cooperative multitasking (0) | 2020.04.12 |
---|---|
Python2 pwntools SyntaxError: invalid syntax 해결방법. (0) | 2020.04.03 |
VIM 디버깅 팁 - 옵션 추적 (0) | 2020.03.25 |
wget으로 curl 대체, curl로 wget 대체 하는 법 (0) | 2020.03.24 |
CURL로 SSE (Server-Sent Event) 응답 받는법 (0) | 2020.03.23 |