Passando um conjunto diferente de argumentos para os diferentes comandos em um script bash do Linux

0

Estou escrevendo um script bash foo.sh que executa também os comandos bar com o primeiro argumento de entrada e baz com o segundo argumento:

#! /bin/bash
bar "$1"
baz "$2"

Agora, quero tornar foo.sh mais flexível, com um número opcional de argumentos para bar e baz , algo como o abaixo:

./foo.sh bar_args="-x -v message=hello" baz_args="-d -m"

E eu quero que foo.sh passe bar_args como os argumentos de entrada para bar e baz_args para baz . Eu quero também que foo.sh funcione normalmente se nenhum dos argumentos for dado (por exemplo, se bar_args não for fornecido, bar deverá ser chamado sem nenhum argumento).

Como fazer isso?

    
por Ali 23.10.2014 / 17:34

1 resposta

1

Você pode fazer isso, mas é um pouco frágil

foo.sh ficará assim

#! /bin/bash
declare "$@"       # evaluate the params as variable declarations
bar $bar_args      # not quoted!
baz $baz_args      # not quoted!

Então, ./foo.sh bar_args="-x -v message=hello" baz_args="-d -m" funcionará como você espera.

Não tente passar uma mensagem com espaço em branco, não pode ser feito dessa maneira.

    
por 23.10.2014 / 18:17