Linux의 터미널에서 Bash Shell 스크립트를 실행 시킬 때, 스크립트 안에서 Command Line으로 전달된 인자를 어떻게 받는지 알아보겠습니다.
1. Command Line으로 전달된 인자 받기
예를 들어, 터미널에서 다음과 같이 인자 없이 스크립트만 실행할 수 있습니다.
$ sh script.sh
하지만, 아래와 같이 스크립트를 실행하면서 다양한 인자들을 전달할 수도 있습니다.
$ sh script.sh 111 222 333
위와 같이 터미널에서 스크립트를 실행할 때 인자가 전달되면, 파일에서는 아래와 같이 인자들을 받을 수 있습니다.
- 인자가 전달되면 스크립트 내부에서는
$1
,$2
처럼,$n
형태로 인자를 읽을 수 있습니다. - n은 인자가 입력되는 순서를 의미합니다.
$#
는 전달된 인자의 개수입니다.
#!/bin/bash
echo "1st param = $1"
echo "2nd param = $2"
echo "3rd param = $3"
echo "The number of params = $#"
Output:
$ bash example.sh 111 222 333
1st param = 111
2nd param = 222
3rd param = 333
The number of params = 3
인자 없이 실행시키면 인자 개수는 0, 인자들은 null(empty)입니다.
$ bash example.sh
1st param =
2nd param =
3rd param =
The number of params = 0
2. 인자를 변수에 할당
다음과 같이 인자들을 다른 변수에 할당할 수 있습니다. 또한 인자들끼리 연산하여 다른 변수에 할당할 수도 있습니다.
#!/bin/bash
num1=$1
num2=$2
num3=$3
sum=$(($num1+$num2+$num3))
echo "num1 = $num1"
echo "num2 = $num2"
echo "num3 = $num3"
echo "sum = $sum"
Output:
$ bash example.sh 111 222 333
num1 = 111
num2 = 222
num3 = 333
sum = 666
3. For Loop를 이용하여 인자 읽기
스크립트가 실행될 때마다 전달되는 인자의 개수가 정해져있지 않다면, for loop로 유동적인 개수의 인자들을 모두 읽을 수 있습니다.
$@
는 전달되는 모든 인자가 포함된 문자열이며, 각각의 인자는 공백으로 구분되어있습니다.
다음과 같이 for loop를 이용하여 전달되는 모든 인자를 읽을 수 있습니다.
#!/bin/bash
echo "All params = $@"
echo "Loop all params!"
for i in $@
do
echo "$i"
done
Output:
$ bash example.sh 111 222 333
All params = 111 222 333
Loop all params!
111
222
333
4. 인자가 전달되었는지 확인 (1)
조건문을 이용하여 인자가 전달되었는지 확인할 수 있습니다.
[ -z $A ]
는 A 문자열의 길이가 0일 때 True를 리턴합니다.
다음과 같이 인자가 전달되었는지 확인할 수 있습니다.
#!/bin/bash
if [ -z $1 ]
then
echo "No parameter passed"
else
echo "Parameter passed = $1"
fi
Output:
$ sh ex_arg4.sh 111
Parameter passed = 111
$ sh ex_arg4.sh
No parameter passed
4. 인자가 전달되었는지 확인 (2)
[ -n "$A" ]
는 A 문자열의 길이가 0일 때 False를 리턴합니다. -z
와 반대되는 값을 리턴합니다.
다음과 같이 인자가 전달되었는지 확인할 수 있습니다.
if [ -n "$1" ]
then
echo "Parameter passed = $1"
else
echo "No parameter passed"
fi
Output:
$ bash example.sh 111
Parameter passed = 111
$ bash example.sh
No parameter passed
References
Loading script...
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)