¿Cuál es la forma más sencilla de "cortar" argumentos específicos pasados ​​al script bash?

¿Cuál es la forma más sencilla de "cortar" argumentos específicos pasados ​​al script bash?

Tengo dos guiones: aaa y bbb.

Cada guión tiene algunos argumentos. El argumento puede ser una cadena, un número o tener un formato como --some-action o --name=foo.

El script aaa ejecuta el script bbb. Algunos argumentos para bbb se generan en aaa, pero algunos argumentos los puedo agregar manualmente ejecutando el script aaa como:

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

No puedo pasar a bbb todos los argumentos de aaa, porque bbb tiene control sobre argumentos desconocidos.

No sé cómo extraer "argumentos a favor de bbb" en un script aaa. Alguien puede ayudarme?

Entonces, quiero ejecutar en aaa:

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

Respuesta1

Podrías analizar todos los argumentos en el aaascript conoptary luego páselos a su script según sea necesario.

ajusté unejemplo:

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

información relacionada