IT 프로그래밍/오픈소스소프트웨어

[오픈소스소프트웨어] 9.1 쉘 프로그래밍

기술1 2024. 10. 13. 17:18
반응형

쉘 프로그래밍

쉘 + 리눅스

 

쉘 스크립트라는 텍스트 파일을 만들면 쉘이 실행하도록 만드는 것입니다. 그러면 쉘이 차례로 시작하게 됩니다. 이 쉘 스크립트 파일을 원하는 스크립트를 실행할 수 있도록 작성을 해야 하는데 그것을 쉘 프로그래밍이라고 부릅니다. 

 

쉘 스크립트는 소스 파일을 만든다고 보시면 됩니다.

 

쉘 스크립트 만들고 실행하기

 

스크립트를 실행하는 4가지 방법

  1. ㅇ파일의 절대 경로명을 입력하여 실행
  2. 쉘 프로그램을 명시하여 실행
  3. . ./ (dot space dot slash)를 이용하여 실행
  4. 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를 만들어야 합니다.

.

local로 바꾼 후

반응형