1. 매개변수 확장
(1) 기본 매개변수
이대로 실행하면, 아무런 결과도 없을 것디ㅏ. 쉘이 a가 아닌 a_file을 변수명으로 확장했기 때문이다. 이를 해결하기 위해서는 중괄호를 사용하면 해결할 수 있다.$ a="foo" $ echo "$a_file"
$ echo "${a}_file" foo_file
(2) 빈 변수를 관리하기 위한 확장
여러 매개변수 확장들이 존재하지 않거나 빈 변수를 처리할 수 있다. 이러한 확장들은 위치 매개변수의 부재를 제어하고 매개변수에 기본값을 할당하기 쉽게 한다.
" ${parameter:-word} "
parameter가 설정되지 않거나 비어있다면, 이 확장 결과는 word의 값이 된다. 만약 비어있지 않다면 parameter의 값이 된다.$ foo= $ echo ${foo:-"sub value if unset"} sub value if unset $ echo $foo (빈 값) $ foo=bar $ echo ${foo:-"sub value if unset"} bar $ echo $foo bar
(3) 문자열 연산
확장들의 집합은 문자열을 조작하기 위해 사용될 수 있다. 이러한 확장들은 특히 경로명을 조작하기에 적당하다.
" ${#parameter} "
이 확장은 parameter가 포함한 문자열의 길이로 확장된다. 일반적으로 paramter는 문자열이지만 만약 @이거나 *이면 그 확장 결과는 위치 매개변수의 개수를 나타낸다.$ foo="this string is long" $ echo "'$foo' is ${#foo} character long" 'this string is long' is 20 character long
당연히 ${foo:5} 이러한 offset도 가능하다. (5번째 문자부터 출력)