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