셸 스 크 립 트 옵션 설정 및 해석

5199 단어 linuxShell
셸 스 크 립 트 옵션
비교적 복잡 한 셸 스 크 립 트 는 보통 여러 옵션 과 입력 을 지원 합 니 다. 보통 형식 은 -[a-z,A-Z] [filename/settings] 입 니 다. 콘 솔 에서 스 크 립 트 이름 을 입력 할 때 도움말 정 보 를 표시 합 니 다.
도움말 보이 기
Usage () {} 함 수 를 스 크 립 트 의 도움말 함수 로 정의 할 수 있 습 니 다. 도움말 정보 가 간단 할 때 echo 명령 으로 이 루어 집 니 다. 매개 변수 가 많 을 때 cat 도구 와 EOF 기호 에 맞 춰 큰 설명 문 자 를 정의 할 수 있 습 니 다. 예 를 들 어:
Usage() 
{ 
	cat <  [options]
	-d debug (do not delete temporary intermediate images) 
	EOF  
	exit 1 
} 
# 显示帮助 
[ "$1" = "" ] && Usage


이 비트 명령 의 호출 형식 은 다음 과 같이 정 의 됩 니 다. bet [options] 이것 도 흔히 볼 수 있 는 셸 스 크 립 트 매개 변수 형식 입 니 다. options 가 많 을 때 셸 스 크 립 트 는 python 에 있 는 argpase 와 같은 도구 패키지 가 없습니다. 이 매개 변수 설정 을 어떻게 해석 해 야 합 니까?이 럴 때 는 구체 적 인 문 제 를 구체 적 으로 분석 해 야 합 니 다. 실제로 셸 스 크 립 트 는 매개 변수 에 대한 읽 기와 해석 도 매우 유연 합 니 다.
간단 한 옵션 매개 변수
만약 매개 변수 가 - a, - N 과 같은 간단 한 식별 자 일 뿐 이 라면 간단 한 if... then... fi 문 구 를 사용 하여 해석 할 수 있 습 니 다.
if [ $1 = -a ] ; then 
	 REG="-a" 
	 HOWLONG=5 
fi 

복잡 한 옵션 매개 변수
매개 변수 뒤에 구체 적 인 설정 파일 이름 이나 옵션 이 있다 면 - a, - N 과 같은 접두사 뒤에 구체 적 인 설정 문자열 이 있 습 니 다. 예 를 들 어 매개 변 수 는 다음 과 같 습 니 다.
  -T           Estimated job length in minutes, used to auto-set queue name
  -q         Possible values for  are "verylong.q", "long.q" 
                        and "short.q". See below for details
                        Default is "long.q".
  -a         Architecture [e.g., darwin or lx24-amd64]
  -p      Lower priority [0:-1024] default = 0                 
  -M     Who to email, default = `whoami`@fmrib.ox.ac.uk 
  -j               Place a hold on this task until job jid has completed
  -t          Specify a task file of commands to execute in parallel
  -N           Specify jobname as it will appear on queue
  -R               Max total RAM to use for job (integer in MB)
  -l        Where to output logfiles
  -m       Change the SGE mail options, see qsub for details
  -z            If  image or file already exists, do nothing and exit
  -F                    Use flags embedded in scripts to set SGE queuing options
  -s , Submit a multi-threaded task - requires a PE () to be
                        configured for the requested queues.
                         specifies the number of threads to run
  -v                    Verbose mode.


그러면 이런 방식 을 사용 할 수 있다.
nargs=$# 
if [ $nargs -eq 0 ] ; then 
	 usage 
fi 

set -- `getopt T:q:a:p:M:j:t:z:N:R:Fvm:l:s: $*` 
result=$? 
if [ $result != 0 ] ; then 
	echo "What? Your arguments make no sense!" 
fi 
if [ $nargs -eq 0 ] || [ $result != 0 ] ; 
	then usage 
fi 

위의 스 크 립 트 세 션 에서 가장 중요 한 것 은 다음 과 같 습 니 다.
set -- `getopt T:q:a:p:M:j:t:z:N:R:Fvm:l:s: $*`

이 문장 은 매우 중요 합 니 다. 그 중에서 두 개의 명령 행 도 구 를 사 용 했 습 니 다. getopt 와 set. getopt 의 호출 방법 은 다음 과 같 습 니 다.
getopt options optstring parameters

이 곳 의 optstring 은 T:q:a:p:M:j:t:z:N:R:Fvm:l:s: 테이프 값 옵션 입 니 다. 알파벳 뒤에 콜론 (:) 을 추가 하려 면 유사 한 기능 의 접두사 기 호 를 함께 놓 을 수 있 습 니 다. 이 문장의 "Fvm"과 같 습 니 다. 매개 변수 에 잘못된 매개 변수 가 포함 되 어 있 으 면 잘못된 정 보 를 제공 합 니 다.
getopt 에서 파 라 메 터 를 포맷 한 후 set 에서 명령 행 의 원본 파 라 메 터 를 교체 합 니 다.예 를 들 면:
#!/bin/bash
set -- `getopt a:b:c "$@"`

echo "param = $@"

while [ -n "$1" ]
do
    case "$1" in 
     -a) echo "found option a and param = $2" 
         shift ;;
     -b) echo "found option b and param = $2"
         shift ;;
     -c) echo "found option c, no param." ;;
     --) ;;
     *) echo "what's this?" 
        break ;;
    esac
    shift
done

파일 이름 저장 getopttest. 출력 은 다음 과 같 습 니 다:
$ getopt_test -a test -b test -e
getopt: invalid option -- 'e'
param = -a test -b test --
found option a and param = test
found option b and param = test

마지막 으로 셸 스 크 립 트 에 있 는 특수 기호의 의 미 를 첨부 합 니 다.
Shell 스 크 립 트 $0、$?、$!、$$、$*、$#、$@ 등의 의미
$$Shell 자체 의 PID (ProcessID) $!Shell 이 마지막 으로 실행 하 는 배경 Process 의 PID $?마지막 으로 실 행 된 명령 의 끝 코드 (반환 값) $- Set 명령 으로 설 정 된 플래그 를 사용 하면 모든 매개 변수 목록 을 볼 수 있 습 니 다.예 를 들 어 "* 모든 매개 변수 목록. 예 를 들 어"8727 ° 모든 매개 변수 목록.예 를 들 어 "*"로 묶 은 경우 "$1 $2... $n"형식 으로 모든 인 자 를 출력 합 니 다. @ 모든 매개 변수 목록 입 니 다. 예 를 들 어 "@ 모든 매개 변수 목록 입 니 다."@ 모든 매개 변수 목록"과 같 습 니 다. 예 를 들 어 "@"으로 묶 은 경우 "$1""2"... "2"... "2"... "n"형식 으로 모든 매개 변 수 를 출력 합 니 다. $\#Shell 에 추 가 된 매개 변수 개수 $0 Shell 자체 의 파일 이름 1 ~ 1 ~ n 이 Shell 에 추 가 된 매개 변수 값 입 니 다. $1 번 은 1 번 매개 변수, 2 번 은 2 번 매개 변수...
확장 읽 기:
getopt: 명령 행 옵션, 매개 변수 처리:https://blog.csdn.net/tdmyl/article/details/24714297 제1 3 장 학습 노트:https://blog.csdn.net/su1216/article/details/10019221

좋은 웹페이지 즐겨찾기