본문 바로가기

카테고리 없음

[리눅스] 34. 문자열과 수

1. 매개변수 확장

(1) 기본 매개변수
$ a="foo"
$ echo "$a_file"​
이대로 실행하면, 아무런 결과도 없을 것디ㅏ. 쉘이 a가 아닌 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번째 문자부터 출력)