☆IT 개발 프로그램☆/Linux Shell

[리눅스 Shell] 쉘 스크립트에 인수 넘겨주기(Argument parsing)

호기심을 품고사는 중 2020. 6. 4. 15:09
#! /bin/bash

if [ $# -lt 1 ] ;  then
  echo '인수를 넘겨주세요 (option1/option2/option3)'
  exit 1
fi

MY_ARGUMENT=`echo $1 | tr '[A-Z]' '[a-z]'`;

echo 내 인수: ${MY_ARGUMENT}

[스크립트의 가상 조건]

조건 1: 인수가 넘어오지 않으면 '인수를 넘겨주세요'라는 메시지를 출력하고 종료하라.

조건 2: 넘어온 인수의 대문자는 소문자로 파싱하여 처리하라.


콘솔에서 인수(Argument)를 넘겨주고, 내부에서 받아오는 스크립트를 작성해보았다. 파이썬이나 자바는 기존 라이브러리를 사용하면 (ex. argparse) 단순히 메소드만 호출하여 대소문자 처리, 인수 강제여부 등 각종 예외상황을 쉽게 처리할 수 있지만, 쉘 스크립트는 자기 자신이 직접 예외처리를 생각해 가며 작성해야 한다.

 

 

[ 예상 실행 결과 ]


 

 

$# : 넘어오는 인수의 개수

$0 : 쉘 스크립트의 파일명

$1 : 쉘 스크립트로 넘어온 첫번째 인수

$2 : 쉘 스크립트로 넘어온 두번째 인수


 

- lt  : less than 의 줄임 명령어. 즉 if [ $# -lt 1 ] 는 넘어온 인수의 개수가 1보다 적을 때 if 절 안의 구문을 실행하라는 것이다. 

- eq : equal to 의 줄임 명령어. 하지만 == 가 더 보편적으로 쓰인다.

- gt : greater than 의 줄임 명령어. 가령 if [ $# -gt 1 ] 는 넘어온 인수의 개수가 1보다 많을 때에 if 절 안의 구문을 실행하라는 것이다.