Was ist der einfachste Weg, um bestimmte an ein Bash-Skript übergebene Argumente zu „schneiden“?

Was ist der einfachste Weg, um bestimmte an ein Bash-Skript übergebene Argumente zu „schneiden“?

Ich habe zwei Skripte: aaa und bbb.

Jedes Skript hat einige Argumente. Das Argument kann eine Zeichenfolge oder eine Zahl sein oder das Format --some-action oder --name=foo haben.

Das Skript aaa führt das Skript bbb aus. Einige Argumente für bbb werden in aaa generiert, aber einige Argumente kann ich manuell durch Ausführen des Skripts aaa hinzufügen, wie:

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

Ich kann nicht alle Argumente von aaa an bbb übergeben, da bbb die Kontrolle über unbekannte Argumente hat.

Ich weiß nicht, wie ich „Argumente für BBB“ in einem AAA-Skript extrahiere. Kann mir jemand helfen?

Also möchte ich in aaa ausführen:

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

Antwort1

Sie können alle Argumente im aaaSkript mitgetoptund übergeben Sie sie dann nach Bedarf an Ihr Skript.

Ich stelle einBeispiel:

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

verwandte Informationen