English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell 매개변수 전달

Shell 스크립트를 실행할 때 매개변수를 전달할 수 있으며, 스크립트 내 매개변수 가져오는 형식은 다음과 같습니다:$n.n 하나의 숫자를 나타냅니다:1 스크립트에 실행할 첫 번째 매개변수를 설정합니다:2 스크립트에 실행할 두 번째 매개변수를 설정하고 이와 같이 계속됩니다...

온라인 예제

다음 예제에서는 스크립트에 세 가지 매개변수를 전달하고 각각을 출력하겠습니다: $0 실행할 파일 이름(파일 경로 포함):

#!/bin/bash
# author:기본 튜토리얼
# url:ko.oldtoolbag.com
echo "Shell 매개변수 전달 예제!";
echo "실행할 파일 이름: $0";
echo "첫 번째 매개변수: $1";1";
echo "두 번째 매개변수는: $2";
echo "세 번째 매개변수는: $3";

스크립트에 실행 권한을 설정하고 실행하면 다음과 같은 결과가 출력됩니다:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 매개변수 전달 예제!
실행할 파일 이름: ./test.sh
첫 번째 매개변수:1
두 번째 매개변수는 다음과 같습니다:2
세 번째 매개변수는 다음과 같습니다:3

또한, 매개변수 처리를 위해 특수 문자가 몇 가지 있습니다:

매개변수 처리설명
$#스크립트에 전달된 매개변수 개수
$*모든 매개변수를 전달받은 단일 문자열로 출력합니다.
와 같이*「"」로 둘러싸인 경우, "$1 $2 … $n" 형식으로 모든 매개변수를 출력합니다.
$$스크립트가 실행하는 현재 프로세스 ID 번호
$!뒤에서 가동되는 마지막 프로세스의 ID 번호
$@와 $*와 동일하지만, 사용 시 쿼롯을 추가하고 쿼롯 내에서 각 매개변수를 반환합니다。
예를 들어 "$@"이 쿼롯으로 포함된 경우, "$"를 사용하여 각 매개변수를 쿼롯으로 포함하여 사용하며, 쿼롯 내에서 각 매개변수를 반환합니다。1" "$2" … "$n" 형식으로 모든 매개변수를 출력합니다。
$-Shell이 사용하는 현재 옵션을 표시합니다.set 명령어동일한 기능입니다.
$?최종 명령어의 종료 상태를 표시합니다. 0은 오류가 없음을 의미하며, 다른 어떤 값도 오류를 의미합니다。
#!/bin/bash
# author:기본 튜토리얼
# url:ko.oldtoolbag.com
echo "Shell 매개변수 전달 예제!";
echo "첫 번째 매개변수: $1";1";
echo "매개변수 개수: $#";
echo "전달된 매개변수를 문자열로 표시합니다:$"*";

스크립트 실행하고 결과를 다음과 같이 출력합니다:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 매개변수 전달 예제!
첫 번째 매개변수:1
매개변수 개수:3
전달된 매개변수를 문자열로 표시합니다:1 2 3

$* 와 $@의 차이점:

  • 동일점: 모든 매개변수를 참조합니다.

  • 차이점: 트윈 쿼롯에서만 나타납니다. 스크립트 실행 시 세 개의 매개변수를 작성한 경우 1、2、3, * "는 "1 2 3"(한 개의 매개변수가 전달되었습니다),"@"는 "1" "2" "3"(세 개의 매개변수가 전달되었습니다)。

#!/bin/bash
# author:기본 튜토리얼
# url:ko.oldtoolbag.com
echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

스크립트 실행하고 결과를 다음과 같이 출력합니다:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3