${변수명:-문자열}
${변수명-문자열}
변수가 있고 변수값이 null 이 아니면 변수값을 돌려주고, 아니면 문자열을 돌려준다.
${cnt:-0}는 cnt라는 변수값이 있고 null이 아니면 이것을 돌려주고 아니면 0을 돌려준다. 그러나 변수값이 0으로 할당되진 않는다.
${cnt-0}는 cnt라는 변수값이 있으면 이것을 돌려주고 아니면 0을 돌려준다. 그러나 변수값이 0으로 할당되진 않는다.
콜론이 있고 없고의 차이는 변수값이 null 인 경우도 인정하느냐 안하느냐의 차이이다. 콜론이 있으면 null 값은 반환되지 않는다. 아래의 경우도 전부 마찬가지이다.
${변수명:=문자열}
${변수명=문자열}
변수가 있고 변수값이 null 이 아니면 변수값을 돌려주고, 아니면 문자열 변수값으로 할당하고 이 값을 돌려준다
${cnt:=0}는 cnt라는 변수값이 있으면 이것을 돌려주고 아니면 0을 돌려준다. 변수값은 0으로 할당된다.
${변수명:+문자열}
${변수명+문자열}
변수가 있고 변수값이 null 이 아니면 문자열을 돌려주고, 아니면 null을 돌려준다
${cnt:+1}는 cnt라는 변수값이 있으면 1을 돌려주고 아니면 null을 돌려준다.
${변수명:?문자열}
${변수명?문자열}
변수가 있고 변수값이 null 이 아니면 변수값을 돌려주고, 아니면 변수명과 문자열을 돌려준다.
${cnt:?"undefined!!"}는 변수가 정의되지 않았다면 cnt: undefined!! 라는 문장을 출력한다.
${변수명:offset}
${변수명:offset:length}
변수값에서 offset부터 끝까지의 문자열을 출력하거나 offset부터 length만큼의 문자열을 출력한다.
만약 cnt가 abcdefgh 라면
${cnt:4} 는 efgh를 출력하고
${cnt:4:2} 는 ef를 출력한다.
${#변수명}
변수값의 길이
${변수명#문자열}
변수의 제일 앞에서부터 짧게 일치한 문자열 삭제. 제일 앞이 반드시 일치해야 함
${변수명##문자열}
변수의 제일 앞에서부터 길게 일치한 문자열 삭제. 제일 앞이 반드시 일치해야 함
${변수명%문자열}
변수의 제일 뒤에서부터 짧게 일치한 문자열 삭제. 제일 뒤가 반드시 일치해야 함
${변수명%%문자열}
변수의 제일 뒤에서부터 길게 일치한 문자열 삭제. 제일 뒤가 반드시 일치해야 함
${변수명/찾는문자열/변경문자열}
처음 일치하는 문자열을 변경함
${변수명//찾는문자열/변경문자열}
일치하는 문자열을 모두 변경함
${변수명/#찾는문자열/변경문자열}
앞부분이 일치하면 변경
${변수명/%찾는문자열/변경문자열}
뒷부분이 일치하면 변경
${!변수명*}, ${!변수명@}
변수중에서 '변수명'이란 글자로 시작하는 모든 변수명 나열