쉘 전달 매개변수
쉘 스크립트를 실행할 때 스크립트에 매개변수를 전달할 수 있습니다. 스크립트에서 매개변수를 얻는 형식은 $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