쉘 스크립트를 커맨드 라인에서 실행할 때 인자를 전달할 수 있습니다.

터미널에서 어떻게 인자를 전달하고, 스크립트에서 어떻게 인자를 받는지 예제로 알아보겠습니다.

이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.

1. 커맨드 라인에서 인자 전달

터미널에서 다음 명령어로 인자 없이 또는 인자와 함께 스크립트를 실행합니다.

  • $ bash example.sh : 인자 없이 스크립트 실행
  • $ bash example.sh arg1 : 스크립트 실행하며 인자 1개 전달
  • $ bash example.sh arg1 arg2 arg3 : 스크립트 실행하며 인자 3개 전달

2. 스크립트에서 인자 받기

전달된 인자는 스크립트 안에서 $N으로 받을 수 있습니다. N은 전달된 인자의 순서가 됩니다.

  • $1 : 첫번째로 전달된 인자 값
  • $2 : 두번째로 전달된 인자 값
  • $N : N번째로 전달된 인자 값
#!/bin/bash

echo "첫 번째 인자: $1"
echo "두 번째 인자: $2"
echo "세 번째 인자: $3"

인자 3개를 전달하면서 스크립트를 실행하면 아래와 같이 출력됩니다.

$ bash example.sh arg1 arg2 arg3
첫 번째 인자: arg1
두 번째 인자: arg2
세 번째 인자: arg3

인자를 전달하지 않거나, 1개 또는 2개만 전달하면 아래와 같이 동작합니다. 전달되지 않은 인자는 빈 값(null)이 됩니다.

$ bash example.sh
첫 번째 인자:
두 번째 인자:
세 번째 인자:

$ bash example.sh arg1
첫 번째 인자: arg1
두 번째 인자:
세 번째 인자:

$ bash example.sh arg1 arg2
첫 번째 인자: arg1
두 번째 인자: arg2
세 번째 인자:

3. 전달받은 인자를 변수에 할당

아래와 같이 인자를 다른 변수에 할당한 뒤에 사용할 수도 있습니다.

#!/bin/bash

a1=$1
a2=$2
a3=$3

echo "a1: $a1"
echo "a2: $a2"
echo "a3: $a3"

Output:

$ bash example.sh arg1 arg2 arg3
a1: arg1
a2: arg2
a3: arg3