Qual é a maneira mais simples de 'cortar' argumentos específicos passados ​​para o script bash

Qual é a maneira mais simples de 'cortar' argumentos específicos passados ​​para o script bash

Tenho dois scripts: aaa e bbb.

Cada script tem alguns argumentos. O argumento pode ser string, número ou ter formato como --some-action ou --name=foo.

Script aaa execute script bbb. Alguns argumentos para bbb gerados em aaa, mas alguns argumentos que posso adicionar manualmente ao executar o script aaa, como:

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

Não consigo passar para o bbb todos os argumentos de aaa, pois o bbb tem controle para argumentos desconhecidos.

Não sei como extrair "argumentos para bbb" em script aaa. Alguém pode me ajudar?

Então, quero executar em aaa:

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

Responder1

Você poderia analisar todos os argumentos do aaascript comobteropte depois passe-os para o seu script conforme necessário.

Eu ajustei umexemplo:

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

informação relacionada