$1 및 $2를 사용하여 bash 스크립트에 사용자 정의 명령 옵션을 포함하는 방법은 무엇입니까?

$1 및 $2를 사용하여 bash 스크립트에 사용자 정의 명령 옵션을 포함하는 방법은 무엇입니까?

스크립트가 있습니다myscript.sh

#!/bin/sh

echo $1 $2

그 목적은 비슷합니다 ...

./myscript.sh foo bar

이것은 나에게 출력을 제공합니다 ...

foo bar

하지만 이 스크립트에 사용자 정의 명령 옵션이 포함되도록 하려면 어떻게 해야 합니까? 예를 들어...

./myscript.sh -a foo and corespond to $1

그리고

./myscript.sh -b bar and corespond to $2

답변1

당신은 사용해야합니다남자 1 강한 타격:

작은 예:

#!/bin/bash

while getopts "a:b:" opt      # get options for -a and -b ( ':' - option has an argument )
do
    case $opt in
        a) echo "Option a: $opt, argument: $OPTARG";;
        b) echo "Option b: $opt, argument: $OPTARG";;
    esac
done

답변2

bash를 사용 중인 쉘로 나열했으므로 다음을 입력하십시오.

$ help getopts

그러면 다음과 같이 인쇄됩니다:

getopts: getopts optstring name [arg]
옵션 매개변수를 구문 분석합니다.

쉘 프로시저는 Getopts를 사용하여 위치 매개변수를 옵션으로 구문 분석합니다.

OPTSTRING에는 인식할 옵션 문자가 포함되어 있습니다. 문자 뒤에 콜론이 오면 옵션에는 인수가 있어야 하며 공백으로 구분해야 합니다.

각 호출에서 getopts는 다음 옵션을 쉘 변수 $name에 배치하고 name이 존재하지 않으면 초기화하며 처리될 다음 인수의 인덱스를 쉘 변수 OPTIND에 배치합니다. OPTIND는 쉘이나 쉘 스크립트가 호출될 때마다 1로 초기화됩니다. 옵션에 인수가 필요한 경우 getopts는 인수를 쉘 변수 OPTARG에 배치합니다.

Getopts는 일반적으로 위치 인수($0 - $9)를 구문 분석하지만 더 많은 인수가 제공되면 대신 구문 분석됩니다.

관련된:

  1. 선택 튜토리얼을 받아보세요.
  2. getopts가 명령줄 옵션을 전달하는 방법
  3. Bash에서 getopt를 사용하는 방법
  4. Getopt, getopts 또는 수동 구문 분석?

관련 정보