쉘 전달 매개변수


쉘 스크립트를 실행할 때 스크립트에 매개변수를 전달할 수 있습니다. 스크립트에서 매개변수를 얻는 형식은 $n입니다. n은 숫자를 나타내고, 1은 스크립트를 실행하는 첫 번째 매개변수이고, 2는 스크립트를 실행하는 두 번째 매개변수입니다...

Example

다음 예에서는 세 개의 매개변수를 스크립트에 전달합니다. 을 출력합니다. 여기서 $0는 실행할 파일 이름입니다.

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "Shell 传递参数实例!";
echo "执行的文件名:
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
"; echo "第一个参数为:"; echo "第二个参数为:"; echo "第三个参数为:";

스크립트에 대한 실행 권한을 설정하고 스크립트를 실행합니다.

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "Shell 传递参数实例!";
echo "第一个参数为:";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

그 외에도 여러 특수 문자가 있습니다. 매개변수 처리에 사용:

매개변수 처리Explanation
$#스크립트에 전달된 매개변수 수
$*스크립트에 전달된 모든 매개변수를 단일 문자열로 표시합니다. .
"$*"가 """로 묶인 경우 모든 매개변수는 "$1 $2 ... $n" 형식으로 출력됩니다.
$$현재 실행 중인 스크립트의 프로세스 ID 번호
$!백그라운드에서 실행 중인 마지막 프로세스의 ID 번호
$@$*와 동일, 하지만 따옴표를 사용하고 각 매개변수를 따옴표로 묶어서 반환하세요.
예를 들어 "$@"을 """로 묶으면 모든 매개변수는 "$1" "$2" ... "$n" 형식으로 출력됩니다.
$- set 명령과 동일한 기능을 가진 셸에서 사용되는 현재 옵션을 표시합니다.
$?마지막 명령의 종료 상태를 표시합니다. 0은 오류가 없음을 나타내고, 다른 값은 오류를 나타냅니다.
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

스크립트를 실행하면 출력 결과는 다음과 같습니다.

#!/bin/bash
# author:php中文网
# url:www.php.cn

echo "-- $* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- $@ 演示 ---"
for i in "$@"; do
    echo $i
done

$* 및 $@ 차이점:

  • 동일성: 둘 다 모든 매개 변수를 인용합니다.

  • 차이: 큰따옴표에만 반영됩니다. 스크립트가 실행될 때 세 개의 매개변수 1, 2, 3이 작성된다고 가정하면 " * "는 "1 2 3"(하나의 매개변수가 전달됨)과 동일하고 "@"는 "1" "2"와 동일합니다. " 3"(3개의 매개변수가 전달됨).

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

스크립트를 실행하면 출력 결과는 다음과 같습니다.

rrreee