Linux/Shell Script

[Shell Script] 6. Positional Parameters

JhBeom 2023. 4. 24. 10:52

오늘은 따배님의 Shell Script 강의 제6강, Positional Parameters에 대해서 살펴보겠다.

매번 하는 말이지만, 나는 그저 강의를 듣고 정리할 뿐이고, 예제도 다르게 사용할 수도 있고 친절하게 블로그를 작성하는 사람이 아니기 때문에 강의를 직접보고 참조하기를 바란다. 정말 명강의다.

https://www.youtube.com/watch?v=Y88jOdaBs4Q&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=7&ab_channel=TTABAE-LEARN 

 

Positional Parameters란?

위치 매개변수라고 불린다. 입력하는 argument들은 $0, $1, $2와 같은 변수에 저장되어 스크립트로 전달이 된다. 각각의 argument는 다음과 같다.

$0: 쉘 스크립트의 이름

$1: 첫번째 매개변수

$2: 두번째 매개변수

$#: 매개변수의 개수

$@ 혹은 $*: 모든 매개변수의 리스트

$$: 로그인 shell의 PID

$PWD: 현재 작업 디렉토리

$PPID: 부모 프로세스 ID

 

이렇게 하면 어려울 수 있으니 여러가지 예시를 들어본다.

 

일단 매개변수는 C언어나 자바, 파이썬 등등을 배운 개발자라면 당연히 알 수 있을 것이다.

파이썬 기준으로

def function1(arg1, arg2):

여기에 있는 arg1, arg2에 해당하는 것이 매개변수다.

곧 이 함수를 사용할 때 집어넣을 수 있는 매개변수이다.

 

개발을 하지 못하나 리눅스를 해본 사람 기준, 또한 shell script를 어느정도 해온 사람 기준으로는 다음과 같다.

cp /etc/passwd ./pass

만약 위의 명령을 실행한다면 무슨 의미인가?

복사한다, 무엇을? /etc/passwd 파일을, 어디에다가? 현재 디렉토리의 pass라는 파일로

여기서 cp 가 $0,

/etc/passwd가 $1,

./pass가 $2에 해당한다고 보면 된다.

 

만약 이렇게 집어넣을 수 있는 매개변수가 10가지 이상이라면?

$1, $2......$9 ${10} 이런식으로 간다.

10번째 매개변수부터는 대괄호를 열어서 숫자를 집어넣어 준다고 한다.

 

영상의 첫번째 예시는 스킵하고 두번째 예시를 보겠다.

예시는 다음과 같다. 여기서 우리가 주목하여 볼 것은 $1이 있는 부분이다. 스크립트를 실행시켜보면

이렇게 나온다. 단순히 스크립트만 실행 시킨 것이 아니라, 스크립트명 뒤에 /home 이라는 매개변수를 전달하였다.

이렇게 전달하니 $1이 되어있던 부분에 /home 이 나오는 것을 알 수 있다.

 

이렇게 쉘 스크립트에 매개변수를 전달하려면 $1, $2를 쓰면 되니 잘 알아두자