- 변수 초기화시, 등호 기호 좌우에는 공백이 있으면 안됨(ex. animal= tiger, animal = tiger)
- 변수 참조시에는 항상 $기호가 앞쪽에 붙어야함
- 변수에 공백문자가 있다면 그 변수를 참조 하였을때, 공백문자가 인식되어 변수를 공백문자 별로 나누어 읽음
- 따라서 변수에 공백문자가 있다면, 변수를 참조할때 또한 인용부호 안에 넣어주어야 함
- 변수에 더해 어떤 내용을 추가로 표시하고 싶다면, ${animal}s 와 같이 변수를 중괄호 안에 넣어주어야 함.
- 다음과 같은 스크립트 파일에서
dirname $0
에서의 의미는 내부의 명령어가 먼저 실행되고, 실행 결과가 저장되어 DIRECTORY 변수의 초기화에 이용됨을 의미
dirname $0
에서, $0은 특수 매개 변수 인데, 현재 스크립트 파일의 경로명을 의미하며, 현재 스크립트 파일의 경로명중 dirname 부분만 가져오는 것을 의미한다.- 특수 매개 변수의 종류
- 미리 예약되어 있는 변수를 환경 변수라고 한다.
- env 명령어로 현재 사용중인 변수값을 확인 할 수 있음
- 환경 변수의 종류
- declare 명령어를 사용하면 변수를 다양한 방법으로 선언할 수 있음
- declare -a 옵션을 통해 변수에 배열을 넣을 수 있음, alnum=(a1 b1 c1 d1 e1) 와 같이 배열 생성
- 배열은 다음과 같이 참조 가능, echo "{alnum[1]}"
- declare -i 옵션을 통해 정수형 변수를 선언 가능, 이러한 변수는 연산이 가능함, 쉘에서는 변수에 숫자가 저장되었다고 해서 정수형 변수로 저장 되지 않고 문자 자체로 저장됨
- declare -r 옵션을 통해 읽기 전용 변수 선언 가능
- declare -x 옵션을 통해 export 명령어의 의미를 가질 수 있음
- testString="That that is is that that is not is not"
- echo ${#testString} 은 testString 의 글자 개수를 출력
- echo ${testString:0} 은 testString 의 0번째 문자부터 출력
- echo ${testString:0:3} 은 testString의 0번째 문자부터 3개 문자 출력
- echo ${testString#T*is} 은 testString의 앞부분부터 탐색하여 T로 시작하는 부분부터 is로 끝나는 부분 제외하고 출력: is that that is not is not
- echo ${testString##T*is} 은 testString의 앞부분부터 탐색하여 T로 시작하고 is로 끝나는 부분 중 가장 크기가 가장 큰 부분을 제외하고 출력: not
- echo ${testString%is*not} 은 testString의 뒷부분부터 탐색하여 is로 시작하고 not 으로 끝나는 부분을 제외하고 출력: That that is is that that is not
- echo ${testString%%is*not} 은 testString의 뒷부분부터 탐색하여 is로 시작하고 not 으로 끝나는 부분중 크기가 가장 큰 부분을 제외하고 출력: That that
- echo ${testString//that} 은 testString에서 that과 일치하는 부분을 모두 제외하고 출력: That is is is not is not
- echo ${testString/that/this} 은 testString에서 that과 일치하는 부분을 한개만 찾아 this로 치환하고 결과 출력: That this is is that that is not is not
- echo ${testString/[tT]hat/this} 은 testString에서 that이나 That과 일치하는 부분을 한개만 찾아 this로 치환하고 결과 출력: this that is is that that is not is not
- echo ${testString//[tT]hat/this} 은 testString에서 that이나 That과 일치하는 부분을 앞에서부터 모두 찾아 this로 치환하고 결과 출력: this this is is this this is not is not
- echo ${testString/#That/this} 은 testString에서 that과 일치하는 부분을 앞에서부터 한개만 찾아 this로 치환하고 결과 출력: this that is is that that is not is not
- echo ${testString/%not/NO} 은 testString에서 not과 일치하는 부분을 뒤에서부터 찾아 한개만 NO로 치환하고 결과 출력: That that is is that that is not is NO