쉘 프로그래밍
쉘 + 리눅스
쉘 스크립트라는 텍스트 파일을 만들면 쉘이 실행하도록 만드는 것입니다. 그러면 쉘이 차례로 시작하게 됩니다. 이 쉘 스크립트 파일을 원하는 스크립트를 실행할 수 있도록 작성을 해야 하는데 그것을 쉘 프로그래밍이라고 부릅니다.
쉘 스크립트는 소스 파일을 만든다고 보시면 됩니다.
쉘 스크립트 만들고 실행하기
스크립트를 실행하는 4가지 방법
- ㅇ파일의 절대 경로명을 입력하여 실행
- 쉘 프로그램을 명시하여 실행
- . ./ (dot space dot slash)를 이용하여 실행
- source 명령어를 이용하여 실행
$ ./scriptfile
$ /home/myaccount/scriptfile
$ bash scriptfile
$ . ./scriptfile
$source scriptfile
PATH에 추가
PATH를 해주지 않으면 전체 경로를 지정을 해주어야 프로그램이 어디있는지 알아야 실행할 수 있는지 PATH에 저 디렉토리가 들어가 있기 때문에 파일명만 적어도 PATH에 있는 디렉토리를 찾아보고 이것을 실행시켜주는 것입니다.
작은 따음표와 큰 따음표의 차이
- 인용을 위해서는 따음표를 사용한다.
쉘 내에서 해석이 되어서 5라는 파일이 생겼습니다.
이것이 5의 파일의 내용입니다. *은 현재 디렉토리에 있는 모든 파일로 해석을 하는 것입니다. 그러면 echo 2 myscript 3 > 5 is valid inequality 이런 식으로 해석이 됩니다. > 이것도 스크립트의 쉘에서 output 출력을 redirection하는 것이기 때문에 쉘에 의해서 echo의 결과를 5라는 파일에 저장한다고 해석이 됩니다.
이렇게 쌍따음표 혹은 작은따음표를 해주면 모두 출력이 되는 것을 볼 수 있습니다.
따음표 해석
작은 따음표는 정말로 쉘이 전혀 해석하지 않는 반면에 쌍따음표는 일부 기능에 대해서는 쉘이 해석을 합니다. 쉘 변수같은 것을 해석하는 것입니다.
그래서 따음표 하나를 쓰는 것이 더 강력하다고 볼 수 있습니다.
Backslash를 이용한 인용
Backslash를 하면 해석을 하지 않는 것을 볼 수 있습니다.
위치 매개변수
스크립트 실행시에 매개변수를 전달할 수 있습니다.
$scriptname arg1 arg2 arg3 ...
스크립트의 명령 줄 매개변수를 저장하는 내장형 변수
함수
함수의 정의 :
function functname{
shell commands
}
or
functname()
{
shell commands
}
함수는 스크립트와 달리 별개의 서브 프로세스에서 실행되지 않습니다. 자신의 login session에서 이미 정의되어 있는 함수를 알아내려면 $declare -f, $ declare -F 를 해주면 됩니다.
우선순위
- 동일한 이름을 가지는 함수와 스크립트가 있으면 함수가 우선권을 갖습니다.
실행의 우선순위
- alias
- 키워드
- 함수
- 내장명령
- 스크립트 파일 또는 바이너리 실행 파일
함수에서의 positional parameters
일반적으로 여러 개의 함수들을 하나의 쉘스크립트에서 정의하여 사용합니다.
따라서 각각의 함수는 자신만의 positional parameter를 만들어야 합니다.
.
'IT 프로그래밍 > 오픈소스소프트웨어' 카테고리의 다른 글
[오픈소스소프트웨어] chap 9.5 파일 속성 검사 (0) | 2024.10.14 |
---|---|
[오픈소스소프트웨어] chap 9-2 쉘 변수 (0) | 2024.10.14 |
[오픈소스소프트웨어] 8.2 chmod, umask (0) | 2024.10.13 |
[오픈소스소프트웨어] 7.3 파일 접근 관리 (0) | 2024.10.13 |
[오픈소스소프트웨어] part7-1 (0) | 2024.10.12 |