어떤 터미널 창을 열었을 때 우리는 쉘을 보게 된다. 이 쉘은 명령어를 입력하여 컴퓨터와 대화하는 프로그램이다. 이 쉘은 프로그램이기 때문에 어떤 터미널 창을 띄울 경우 하나의 프로세스라는 말이다. 리눅스, 맥 OS X에서 기본으로 사용되는 쉘은 Bash 쉘이다 이 Bash 쉘은 유닉스에서 사용되던 본 쉘(Bourne shell)을 GNU에서 확장하여 개발하였다. 이 글에서는 bash 쉘에서 사용하는 문법을 이용해 짧은 쉘 스크립트 프로그램을 짜는 방법을 알아볼 것이다.
우선 쉘에서는 환경변수와 지역변수가 존재한다. 환경변수는 자식 프로세스에게 상속되는 변수이고 지역변수는 상속되지 않는 변수이다. bash shell창에 $ env를 통해 미리 정해진 환경 변수들을 살펴볼 수 있다. bash shell에서 다음과 같이 변수를 설정할 수 있다.
$ VAR=STRING
$ export VAR
첫 번째 줄과 같이 [변수명]=[문자열]로 지역변수를 설정할 수 있고 두 번째 줄과 같이 export [변수명]을 통해 설정한 지역변수를 환경변수로 만들 수 있다. 이때 주의해야할 점은 '=' 앞뒤에 공백이 있으면 안된다는 것이다.
또 리스트 변수를 선언할 수 있다. 리스트 변수는 다음과 같이 선언할 수 있다.
$ HERO=(LEESOONSHIN KIMYOUSHIN AHNJUNGKEUN YOUKWANSOON)
${HERO[i]} #리스트의 i번째 원소
${HERO[*]} #리스트의 모든 원소
${HERO[@]} #동일
${#HERO[*]} #리스트의 원소 개수
${#HERO[@]} #동일
첫 번째 줄과 같이 괄호( ) 안에 공백으로 원소를 구분하며 나열하여 선언할 수 있다. 그 아래와 같이 C언어와 비슷하게 대괄호 안에 원하는 인덱스의 번호를 주어 해당 원소에 접근할 수 있다. 만약 모든 원소를 사용하고 싶은 경우 인덱스 번호 대신 '*'나 '@'를 주면 된다. 마지막으로 원소의 개수는 모든 원소를 접근하는 방법에다가 리스트 변수명 앞에 '#'을 붙여 나타낼 수 있다. 실제 실행결과는 다음과 같다.
echo라는 명령어는 뒤에 나오는 인자를 화면에 출력해주는 명령어이다. 따라서 변수를 줬을 때 변수의 값을 출력해준다. 변수를 접근하고자할 때는 변수명 앞에 '$'를 붙여줘야한다. 그렇지 않으면 문자열로 인식하여 다음과 같이 출력될 수 있다.
위 사진은 wsl2 Ubuntu-20.04에서 실행한 결과다. 다음 시간에는 이런 변수를 통해 짧은 shell script program을 짜보겠다.
'리눅스 시스템 프로그래밍' 카테고리의 다른 글
[Linux] 리눅스 시스템 프로그래밍 thread(스레드) 생성과 종료 (0) | 2021.08.06 |
---|---|
[Linux] 저수준 파일 입출력과 고수준 파일 입출력 (0) | 2021.07.20 |
[Linux] Bash shell script programming 2021년도 요일 구하기 (0) | 2021.07.19 |
[Linux] Bash shell script programming 소수 합 구하기 (0) | 2021.07.19 |
[Linux] 리눅스시스템프로그래밍 ls, chmod, touch 명령어 만들기 (0) | 2021.07.09 |