bash 스크립트에 전달된 특정 인수를 '잘라내는' 가장 간단한 방법은 무엇입니까

bash 스크립트에 전달된 특정 인수를 '잘라내는' 가장 간단한 방법은 무엇입니까

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

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

스크립트 aaa는 스크립트 bbb를 실행합니다. aaa에서 생성된 bbb에 대한 일부 인수는 다음과 같이 스크립트 aaa 실행에서 수동으로 추가할 수 있는 일부 인수입니다.

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

bbb는 알 수 없는 인수에 대한 제어 권한을 갖고 있기 때문에 aaa의 모든 인수를 bbb에 전달할 수 없습니다.

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

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

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

답변1

aaa다음을 사용하여 스크립트 의 모든 인수를 구문 분석할 수 있습니다.getopt그런 다음 필요에 따라 스크립트에 전달합니다.

나는 조정한다:

#!/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

관련 정보