Bash에서 명령줄 인수를 처리하는 방법은 무엇입니까?

Basheseo Myeonglyeongjul Insuleul Cheolihaneun Bangbeob Eun Mueos Ibnikka



Linux에서는 명령줄 인수를 bash 스크립트의 입력으로 사용합니다. Bash는 이러한 명령줄 인수를 순차적으로 가져와 옵션으로 구문 분석할 수 있습니다. 이러한 인수를 사용하면 동작과 스크립트의 출력에 동적으로 영향을 줄 수 있습니다.

이러한 인수를 다르게 구성하여 입력 및 출력에 영향을 줄 수 있습니다. 그렇기 때문에 bash에서 명령줄 인수를 처리하는 것이 필수적이지만 많은 신규 사용자는 이를 수행하는 방법을 배워야 합니다. 따라서 이 가이드에서는 bash에서 명령줄 인수를 처리하는 다양한 방법을 설명합니다.







Bash에서 명령줄 인수를 처리하는 방법은 무엇입니까?

Bash에서 명령줄 인수를 처리하는 다양한 방법이 있으므로 간략한 정보를 얻기 위해 살펴보겠습니다.



getopt 함수



getopt 함수는 bash에서 인수를 정의하고 구문 분석하기 위한 옵션과 구문을 제공하므로 편리합니다. 인수를 기반으로 특정 형식의 데이터베이스 파일이나 보고서를 만들 때 사용할 수 있는 Linux의 내장 함수입니다. getopt 함수는 두 가지 유형의 인수가 있기 때문에 짧은 명령줄 인수를 구문 분석하는 데 도움이 됩니다.





  • 짧은 인수: 다음은 하이픈이 뒤에 오는 단일 문자 인수입니다. 예를 들어 -a, -l, -h 등은 단일 인수의 몇 가지 예입니다.

  • 긴 인수: 이중 하이픈이 뒤에 오는 다중 문자 인수입니다. -all, -list, -help 등과 같은 긴 인수의 다양한 예가 있습니다.

getopt 유틸리티를 사용하여 명령줄 인수를 처리하는 예를 들어 보겠습니다. 다음 정보가 포함된 'getopt.sh'라는 bash 스크립트를 만들었습니다.



!/ 큰 상자 / 세게 때리다

동안 getopts 'A:B:C:D:' 세부; 하다

사례 ' $디테일 ' 안에

)

에코 '시민 이름은 $OPTARG ' ;;

)

에코 '시민증은 $OPTARG ' ;;

)

에코 '출생지는 $OPTARG ' ;;

)

에코 '직업은 $OPTARG ' ;;

* )

출구 1 ;;

에삭

완료

옮기다 ' $(($OPTING -1) )'



만약에 [ ! -와 함께 $1 ] ; 그 다음에

에코 '결혼 상태 $1'

또 다른

에코 '항목 없음'

출구 1

~이다



만약에 [ ! -와 함께 $2 ] ; 그 다음에

에코 '가족 $2'

~이다

이제 입력에 필요한 인수를 사용하여 스크립트를 실행해 보겠습니다.

위의 이미지에서 볼 수 있듯이 getopt 함수로만 스크립트를 실행한 다음 일반 인수를 추가하여 완전한 결과를 얻습니다.

플래그 사용

플래그는 앞에 하이픈(-)이 오는 단일 문자일 뿐입니다. getopt 함수를 사용하여 인수를 전달할 때 플래그를 사용합니다. -a, -b, -c는 플래그의 몇 가지 예입니다. 예를 들어 스크립트에는 시민의 이름, 신분증, 장소, 나이, 직업이 필요합니다. 따라서 j, k, l, m, n 플래그를 사용하여 시민의 이름, ID, 장소, 나이 및 직업을 동시에 정의했습니다.

#!/빈/배시

하는 동안 getopts j:k:l:m:n: 플래그 정보

하다

사례 ' ${플래그_정보} ' 안에
< >
< 저것 > 제이 ) 시민 이름 = ${OPTARG} ;; 저것 >
< 저것 > 케이 ) 주민등록번호 = ${OPTARG} ;; 저것 >
< 저것 > ) 장소 = ${OPTARG} ;; 저것 >
< 저것 > ) 나이 = ${OPTARG} ;; 저것 >
< 저것 > N ) 직업 = ${OPTARG} ;; 저것 >
>
에삭

완료

에코 '입력한 세부 정보는 다음과 같습니다.'

에코 '시민 이름: $citizenname ' ;

에코 '주민등록번호: $citizenid ' ;

에코 '장소: $장소 ' ;

에코 '나이: $age ' ;

에코 '직업: $직업 ' ;

스크립트는 터미널에서 다음 결과를 제공합니다.

. /< 스크립트 > .쉿 -제이 대니 -케이 476 -엘 Toronto -중 25 -N 작가

사용 [이메일 보호됨] 루프 포함

“ [이메일 보호됨] ” 변수는 모든 입력 인수의 배열일 뿐입니다. '를 사용하여 여러 입력을 전달할 수 있습니다. [이메일 보호됨] 변수. 이 변수를 루프로 사용하여 인수를 반복할 수 있습니다. “ [이메일 보호됨] ” 변수가 유용합니다. 입력 크기를 모르고 위치 인수를 사용할 수 없습니다. 따라서 ' [이메일 보호됨] ” getopt 함수를 반복해서 정의하는 대신. 다음은 루프를 사용하는 예입니다. [이메일 보호됨] 스크립트에서 함께:

#!/빈/배시

하나에 = ( “$ @ )



만약에 [ $# -gt 1 ]

그 다음에



추가하다 =$ ( ( ${num[0]} + ${num[1]} ) )

에코 '모든 숫자의 추가는 다음과 같습니다. $ 추가 '



빼기 =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

에코 '숫자의 빼기는 다음과 같습니다. $빼기 '



곱하다 =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

에코 '숫자의 곱셈은 다음과 같습니다. 곱하기 '



디비전1 =$ ( ( ${num[0]} / ${num[1]} ) )

에코 '의 부문 ${num[0]} 그리고 ${num[1]} 이다: $division1 '



디비전2 =$ ( ( ${num[1]} / ${num[2]} ) )

에코 '부서 ${num[1]} 그리고 ${num[2]} 이다: $division2 '



디비전3 =$ ( ( ${num[0]} / ${num[2]} ) )

에코 '부서 ${num[0]} 그리고 ${num[2]} 이다: $division2 '



~이다

위의 스크립트는 명령줄 인수를 기반으로 다양한 산술 계산을 수행합니다. 예를 들어 입력으로 50, 35 및 15를 입력했습니다.

위치 매개변수 사용

$1에 먼저 액세스한 다음 $2에 액세스하는 방식으로 위치 매개변수에 액세스할 수 있습니다. 예를 들어 이름을 첫 번째 인수로 읽은 다음 도시를 두 번째 인수로 읽는 스크립트를 작성해 보겠습니다. 그러나 도시를 먼저 전달한 다음 이름을 전달하면 이름을 도시로 간주하고 그 반대의 경우도 마찬가지입니다. 이 개념을 이해하기 위해 다음 스크립트를 자세히 살펴보겠습니다.

#!/빈/배시

에코 '입력하신 내용입니다'

에코 '이름 $1'

에코 '도시 $2'

터미널에서 스크립트를 실행할 때 이름과 도시를 추가해야 합니다.

마무리

이것은 bash에서 명령줄 인수를 처리하는 방법에 대해 알아야 할 모든 것입니다. 적절한 예를 통해 시도할 수 있는 다양한 접근 방식을 설명했습니다. 스크립트에 인수를 추가하려는 경우 다양한 명령이 있습니다. 따라서 Linuxhint를 방문하여 이에 대해 자세히 알아보십시오.