Bash 스크립트에 전달된 특정 매개변수를 "자르기"하는 가장 쉬운 방법은 무엇입니까

Bash 스크립트에 전달된 특정 매개변수를 "자르기"하는 가장 쉬운 방법은 무엇입니까

aaa와 bbb라는 두 개의 스크립트가 있습니다.

각 스크립트에는 몇 가지 매개변수가 있습니다. 인수는 문자열, 숫자일 수도 있고 --some-action 또는 --name=foo와 같은 형식을 가질 수도 있습니다.

aaa 스크립트는 bbb 스크립트를 실행합니다. bbb의 일부 매개변수는 aaa에서 생성되지만 aaa 스크립트를 실행하여 일부 매개변수를 수동으로 추가할 수 있습니다. 예를 들면 다음과 같습니다.

$ aaa "arguments for aaa" "arguments for bbb"

bbb는 알 수 없는 매개변수를 제어할 수 있기 때문에 aaa의 모든 매개변수를 bbb에 전달할 수 없습니다.

aaa 스크립트에서 "bbb의 매개변수"를 추출하는 방법을 모르겠습니다. 누구든지 나를 도와줄 수 있나요?

그래서 저는 aaa에서 실행하고 싶습니다:

bbb "some arguments from aaa" "arguments for bbb"

답변1

aaa다음을 사용하여 스크립트의 모든 매개변수를 구문 분석 할 수 있습니다.선택 항목 가져오기그런 다음 필요에 따라 스크립트에 전달합니다.

하나 조정했어요:

#!/bin/bash

OPTS=`getopt -o abcdef -l argument-for-both: -- "$@"`
if [ $? != 0 ]
then
    exit 1
fi

eval set -- "$OPTS"

while true ; do
    case "$1" in
        -a) OPT_a=true; shift;;
        -d) ARG_B="$ARG_B -b"; shift;;
        --argument-for-both)
            OPT_argument_for_both=true
            ARG_B="$ARG_B --argument-for-both"
            shift;;
    esac
done

# aaa
if [[ $OPT_a ]] ; then do_something ; fi
if [[ $OPT_argument_for_both ]] ; then do_something_else ; fi

# bbb
bbb $ARG_B

관련 정보