오픈소스소프트웨어 정리 #09 쉘 프로그래밍

yuju9·2022년 10월 10일
0

쉘스크립트(소스파일)

  • 리눅스 명령들을 포함한 텍스트 파일
  • shell에 의해 해석되고 실행

쉘 프로그래밍/쉘 스크립트 프로그래밍

  • 일정한 동작을 수행할 수 있도록 리눅스 명령어를 사용하여 쉘 스크립트를 작성하는 것

예시

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

1. 파일의 절대 경로명 입력 후 실행

ex. $ ./scriptfile or $ /home/myaccount/scriptfile

2. 쉘 프로그램을 명시하여 실행

ex. $ bash scriptfile

3. . ./ (dot space dot slash)를 이용하여 실행

ex. $ . ./scriptfile

4. source 명령어를 이용하여 실행

ex. $ source scriptfile

스크립트를 실행하는 다른 방법

스크립트 파일이 있는 디렉토리를 PATH 환경변수에 추가

ex.

$ export PATH=$PATH:~/scripts
$ echo $PATH #해당 명령어에 경로가 등록되어짐
$ cd /go/to/anydirectory
$ helloworld.sh

작은 따옴표와 큰 따옴표의 차이

  • 인용을 위해서는 따옴표를 사용

backslash()를 이용한 인용

  • 인용의 또 다른 한 가지 방법은 backslash() 문자를 사용하는 것
  • ex. $ echo 2\*3\>5 is a valid inequality.

위치 매개변수

  • 스크립트 실행시에 매개변수를 전달할 수 있음
    $scriptname arg1 arg2 arg3 ...
  • 스크립트의 "명령 줄 매개변수"를 저장하는 내장형 변수
  • ex.

함수

  • 동일한 이름을 가지는 함수와 스크립트가 있으면 함수가 우선권
  • 실행 우선 순위
    1. Alias
    2. 키워드 (function, it, for)
    3. 함수
    4. 내장 명령 (cd, type ...)
    5. 스크립트 파일 또는 바이너리 실행 파일

함수에서의 positional parameters

  • 일반적으로 여러 개의 함수들을 하나의 쉘 스크립트에서 정의하여 사용
  • 따라서 각각의 함수는 자신만의 positional parameter를 가져야함. 즉, positional parameter는 각각의 함수에 local함.
  • 하지만 다른 변수들은 local하지 않음. 함수 내부에서 정의된 변수도 local하지 않음.

  • 함수 내에서 정의한 변수를 함수 내부에 local하게 하고싶으면 local문 사용
  • ex. local var1 = "in function"


변수의 값

  • 지금까지 변수의 값을 꺼내기 위해 $varname 표현 사용
  • 보다 일반적인 ${varname}과 같이 변수 이름을 중괄호로 둘러싸는 것


문자열 연산자

  • 문자열 연산자를 이용하여 변수의 값을 다양한 방법으로 조작

문자열 연산: 대입



문자열 연산: Pattern Matching



명령어 대입

  • 지금까지 변수에 값을 대입하는 두 가지 방법(명시적으로 변수를 정의하고 값을 할당, 명령줄 매개변수)를 다룸
  • 세번째 방법: 명령어 대입(command substitution)
    - 명령어의 실행 결과(표준 출력)을 마치 변수의 값인 것 처럼 사용
    - ${anycommand}: 괄호 내부의 명령어가 실행. 그 명령어의 표준 출력이 마치 변수의 값인 것 처럼 $에 의해 반환됨


0개의 댓글