Bash에서 명령줄 인수 구문 분석

Fumbani Banda 2023년1월30일
  1. Bash에서 위치 매개변수 구문 분석
  2. Bash에서 플래그로 인수 구문 분석
  3. Bash에서 루프 구조로 인수 구문 분석
  4. Bash에서 shift로 인수 구문 분석
Bash에서 명령줄 인수 구문 분석

이 자습서에서는 플래그, 루프 구성 및 시프트 연산자를 사용하여 bash 스크립트에 대한 명령줄 인수를 위치 매개변수로 구문 분석하는 방법을 보여줍니다.

Bash에서 위치 매개변수 구문 분석

위치 매개변수는 bash 스크립트에 전달된 순서대로 액세스됩니다. 첫 번째 매개변수는 $1, 두 번째 매개변수는 $2 등으로 액세스됩니다.

echo "I am $1";
echo  "And I live in $2";

두 개의 위치 인수를 사용하여 스크립트를 실행합니다.

bash positional_args.sh John USA

출력:

I am John
And I live in USA

Bash에서 플래그로 인수 구문 분석

플래그는 각 인수 앞에 하이픈 -으로 시작합니다. 플래그가 사용될 때 인수의 순서는 중요하지 않습니다.

아래 스크립트에서 getopts는 입력에서 플래그를 읽고 OPTARG는 이를 해당 값과 일치시킵니다.

while getopts n:c: flag

do
    case "${flag}" in
          n) name=${OPTARG};;
          c) country=${OPTARG}
     esac
done
echo "I am $name";
echo  "And I live in $country";

실행:

bash flags.sh -n fumbani  -c Malawi

출력:

I am fumbani
And I live in Malawi

Bash에서 루프 구조로 인수 구문 분석

루프 구조는 인수 크기를 미리 알 수 없는 경우에 유용합니다. $@는 모든 입력 매개변수를 포함하는 변수입니다. for 루프는 모든 인수를 반복하고 전달된 각 인수를 처리합니다.

i=1
for arg in "$@"
do
    printf "argument $i: $arg\n"
    i=$((i + 1 ))
done

실행:

bash arguments_loop.sh USA Europe Africa Asia

출력:

argument 1: USA
argument 2: Europe
argument 3: Africa
argument 4: Asia

Bash에서 shift로 인수 구문 분석

shift 연산자는 이동된 위치에서 시작하는 인수의 인덱싱을 만듭니다. 우리의 경우 끝에 도달할 때까지 인수를 1만큼 이동합니다. $#는 입력 크기를 나타내고 $1은 매번 다음 인수를 나타냅니다.

i=1
max=$#
while (( $i <= $max ))
do
    printf "Argument $i: $1\n"
    i=$((i + 1 ))
    shift 1
done

실행:

bash shift.sh one two three

출력:

Argument 1: one
Argument 2: two
Argument 3: three
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub