셸 에서 스 크 립 트 매개 변 수 를 전달 하 는 두 가지 방식

2646 단어
방식 1: $0, $1, $2...
$0, $1, $2.. 등 방식 으로 스 크 립 트 명령 줄 에 들 어 오 는 인 자 를 가 져 옵 니 다. 주의해 야 할 것 은 $0 은 스 크 립 트 경로 와 스 크 립 트 이름 을 가 져 옵 니 다. 그 다음 에 순서대로 인 자 를 가 져 옵 니 다. 인자 가 10 개 를 초과 할 때 (10 개 포함) ${10}, ${11} 을 사용 해 야 인 자 를 얻 을 수 있 습 니 다. 그러나 일반적으로 10 개 인 자 를 초과 하 는 경 우 는 드 물 습 니 다.
1.1 예제: test. sh 파일 을 새로 만 듭 니 다.
#!/bin/bash
echo "脚本$0"
echo "第一个参数$1"
echo "第二个参数$2"

셸 에서 스 크 립 트 를 실행 한 결 과 는 다음 과 같 습 니 다.
$ ./test.sh 1 2

#shell中将会输出:
脚本./test.sh
第一个参数1
第二个参数2

1.2 다음은 인자 가 10 개가 넘 는 경우 test. sh 파일 에 기록 합 니 다.
#!/bin/bash
echo "脚本名$0"
echo "第一个参数$1"
echo "第二个参数$2"
echo "第三个参数$3"
echo "第四个参数$4"
……
echo "第十个参数$10"
echo "第十个参数${10}"

셸 에서 스 크 립 트 를 실행 한 결 과 는 다음 과 같 습 니 다.
$ ./test.sh a b c d e f g h i j

#shell中将会输出:
脚本名./test.sh
第一个参数a
第二个参数b
第三个参数c
第四个参数d
第五个参数e
第六个参数f
第七个参数g
第八个参数h
第九个参数i
第十个参数a0
第十个参数j

${10} 에서 열 번 째 인 자 를 정확하게 읽 었 고 $10 은 $1 로 나 뉘 어 첫 번 째 인자 a 를 읽 은 다음 문자열 0 을 맞 춰 a0 을 출력 하 는 것 을 볼 수 있 습 니 다.
장점: 인 자 를 가 져 오 는 것 이 더 쉽 고 스 크 립 트 를 실행 할 때 필요 한 입력 이 적 습 니 다.
단점: 매개 변 수 를 순서대로 입력 해 야 합 니 다. 중간 에 누 출 되면 매개 변수 가 대응 하 는 것 이 잘못 됩 니 다.
방식 2: getopts语法格式:getopts [option[:]] [DESCPRITION] VARIABLE
option:表示为某个脚本可以使用的选项
":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)
VARIABLE:表示将某个选项保存在变量VARIABLE中

2.1 예시: 똑 같이 test. sh 파일 을 새로 만 듭 니 다.
while getopts ":a:b:c:" opt
do
    case $opt in
        a)
        echo "参数a的值$OPTARG"
        ;;
        b)
        echo "参数b的值$OPTARG"
        ;;
        c)
        echo "参数c的值$OPTARG"
        ;;
        ?)
        echo "未知参数"
        exit 1;;
    esac
done

while 순환 플러스 case 분기 로 서로 다른 매개 변 수 를 가 져 옵 니 다. a: b: c 는 매개 변 수 를 정의 하 는 변수 이름 에 해당 합 니 다. 때로는 알 수 없 는 매개 변수 가 있 을 수 있 으 므 로 하 나 를 추가 하 시 겠 습 니까?갈 라 진 가지.
셸 에서 스 크 립 트 를 실행 한 결 과 는 다음 과 같 습 니 다.
$ ./test.sh -a 1 -b 2 -c 3

#在shell中的输出
参数a的值1
参数b的值2
参数c的值3
$ ./test.sh -a 1 -c 3

#在shell中的输出
参数a的值1
参数c的值3
$ ./test.sh -a 1 -c 3 -d 4

#在shell中的输出
参数a的值1
参数c的值3
未知参数

장점: - a 가 참 수 치 를 사용 하 는 방식 으로 일일이 일치 하기 때문에 매개 변수 가 일치 하 는 오류 가 없 을 뿐만 아니 라 매개 변수 도 부족 할 수 있 으 며 매개 변수 오류 가 발생 하지 않 을 뿐만 아니 라 후기 매개 변수의 확장 과 이식 에 도 편리 합 니 다.
단점: 스 크 립 트 실행 시 인자 입력 이 증가 합 니 다.
 
요약: getopts 방식 으로 매개 변 수 를 전달 하 는 것 을 추천 합 니 다.
 
여러 가지 막 입문 하여 실수 가 있 을 수 있 으 니 양해 해 주시 고 귀중 한 의견 을 제시 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기