PHP 에서 getopt 를 통 해 GNU C 스타일 명령 행 옵션 을 분석 합 니 다.

4038 단어 PHP명령 행
PHP 에서 명령 행 인 자 를 가 져 올 때$argv 를 옮 겨 다 니 며 가 져 올 수 있 습 니 다.사실은 GNU C-style parser for command line options 입 니 다.
예 를 들 어 명령 wget 을 사용 하여 파일 을 다운로드 할 때 아래 의 일부 방식 으로 option 을 지정 해도 됩 니 다.

wget http://mengkang.net/a.jpg -O b.jpg
wget http://mengkang.net/a.jpg -O=b.jpg
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -b
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd
command line options 의 규칙 을 정리 합 니 다.우선 매개 변 수 는 짧 은 매개 변수 이름과 전체 매개 변수 이름 으로 나 뉘 고 일 부 는 맵 관계 도 있 습 니 다.예 를 들 어 우리 가 wget 을 사용 할 때-O 대응--output-document.
정리 options 사용 규범
4.567917.짧 은 참 수 는 하나의 제한 이 있 고 하나의 char 문자 만 있 을 수 있 으 며 1 바이트 만 있 을 수 있 고 1 바이트 만 초과 할 수 없다.예 를 들 어 위의 네 번 째 명령 의 마지막 매개 변 수 는 하나의 매개 변수 인지 세 개의 매개 변수 인지 모른다
  • 짧 은 매개 변수 이름 은 하나의 연결 문자(-)로 시작 합 니 다
  • 4.567917.짧 은 매개 변 수 는 하나-뒤에 여러 매개 변수 명4.567917.긴 참 수 는 다 바이트 의 것 이 고 두 개의 연결 문자(-)가 시작 되 었 다.
    4.567917.행 이 실제 인삼 사이 에 참여 하면 직접 연결 할 수도 있 고 빈 칸 으로 분리 할 수도 있 으 며 등호 로 연결 할 수도 있다
  • 매개 변 수 는 값 이 없 는 것 으로 나 뉘 는데 반드시 값 을 전달 해 야 하고 선택 할 수 있 는 값(즉,전달 할 수 있 고 전달 하지 않 는 것)
  • PHP 에서 의 사용
    
    getopt ( string $options [, array $longopts [, int &$optind ]] ) : array
    https://www.php.net/manual/zh/function.getopt.php
    $options 짧 은 매개 변수 문자 목록,매개 변수 문자 뒤에 사용:표 지 는 값 을 전달 해 야 합 니 다.매개 변수 문자 뒤에 사용:표 지 는 전송 값 을 선택 할 수 있 습 니 다.매개 변수 문자 만 이 매개 변수(또는 옵션)가 전송 값 을 받 아들 이지 않 음 을 표시 합 니 다.
    $longopts 길이 인 자 는 다 바이트 이기 때문에 배열 이 어야 합 니 다.그렇지 않 으 면 구분 할 수 없습니다.긴 매개 변 수 는 위 에 따라:,:규칙 을 따른다.
    pp 에는 구조 체 의 지지 가 부족 합 니 다.c 의 긴 옵션 보다 설정 이 간결 하지만 장단 옵션 의 맵 관계 설정 도 부족 합 니 다.
    
    $shortOpts = "O:Vv::dh";
    $longOpts = ["output-document:","version","verbose::", "debug", "help"]; 
    $options = getopt($shortOpts, $longOpts);
    
    var_export($options);
    
    
    php getopt.php -Oa.jpg 
    array (
     'O' => 'a.jpg',
    )
    php getopt.php -O=a.jpg
    array (
     'O' => 'a.jpg',
    )
    php getopt.php -O a.jpg                 
    array (
     'O' => 'a.jpg',
    )
    php getopt.php -O=a.jpg -dhV
    array (
     'O' => 'a.jpg',
     'd' => false,
     'h' => false,
     'V' => false,
    )
    php getopt.php -O=a.jpg -dhV -vvv
    array (
     'O' => 'a.jpg',
     'd' => false,
     'h' => false,
     'V' => false,
     'v' => 'vv',
    )
    
    위의 예 에서 나의 짧 은 매개 변수 와 긴 매개 변 수 는 대응 하지만 데이터 구조 로 그들의 대응 관 계 를 나타 내지 않 는 다(C 안에 option 구조 체 가 있어 이 대응 관계 의 관 리 를 한다).그래서 우리 둘 다 전달 하면 프로그램 두 개의 값 을 받 을 수 있 고 우 리 는 짧 은 매개 변수 와 긴 매개 변 수 를 어느 것 을 사용 하 는 지 스스로 판단 한다.
    
    php getopt.php -O=a.jpg -dhV -vvv --output-document b.jpg --debug
    array (
     'O' => 'a.jpg',
     'd' => false,
     'h' => false,
     'V' => false,
     'v' => 'vv',
     'output-document' => 'b.jpg',
     'debug' => false,
    )
    
    이렇게 쓰 는 것 은 규범 에 맞지 않 으 니,가능 한 한 이런 쓰 는 방법 을 피해 야 한다.
    
    php getopt.php -O=a.jpg -dhVvvv 
    array (
     'O' => 'a.jpg',
     'd' => false,
     'h' => false,
     'V' => false,
     'v' => 'vv',
    )
    php getopt.php -O=a.jpg -dhvvvV
    array (
     'O' => 'a.jpg',
     'd' => false,
     'h' => false,
     'v' => 'vvV',
    )
    
    이 GNU C command line options 가 사용 하 는 방식 을 정리 하면 명령 을 사용 하면 더욱 빠 져 나 갑 니 다.왜 Liux 에서 각종 도 구 를 사용 하 는 사례 를'기괴 하 다'고 쓰 는 지 헷 갈 리 지 않 습 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기