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

0

Eu tenho dois scripts: aaa e bbb.

Cada script tem alguns argumentos. O argumento pode ser string, number ou tem formato como --some-action ou like --name = foo.

Script aaa executa o script bbb. Alguns argumentos para bbb gerados em aaa, mas alguns argumentos que eu posso adicionar manualmente da execução do script aaa como:

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

Eu não posso passar para bbb todos os argumentos de aaa, porque bbb tem controle para argumentos desconhecidos.

Eu não sei como extrair "argumentos para bbb" no script aaa. Alguém pode me ajudar?

Então, eu quero executar em aaa:

bbb "some arguments from aaa" "arguments for bbb"
    
por Yura Shinkarev 11.04.2017 / 16:43

1 resposta

0

Você pode analisar todos os argumentos no script aaa com getopt e depois passá-los para o seu script conforme necessário.

Eu ajustei um exemplo :

#!/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
    
por 11.04.2017 / 18:05

Tags