bashスクリプトに渡される特定の引数を「カット」する最も簡単な方法は何ですか

bashスクリプトに渡される特定の引数を「カット」する最も簡単な方法は何ですか

スクリプトは aaa と bbb の 2 つあります。

各スクリプトにはいくつかの引数があります。引数は文字列、数値、または --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

関連情報