Como passar argumentos para um script que foi gerado por outro script

1

Eu tenho o seguinte cenário.

Eu tenho um script Perl que pega um ID e procura alguns argumentos de um banco de dados. digamos look_up_args.pl 234 imprime o seguinte abc 123 "something with spaces"

Eu tenho outro script de shell script.sh que faz o seguinte

some_command --param1 $1 --param2 $2 --par3 "$3" ...

o que estou tentando fazer é chamar o script com os argumentos

Eu tentei os dois métodos a seguir

./script.sh './look_up_args.pl 234'
./script.sh $(./look_up_args.pl 234)

ainda assim, sempre que eu executar o script.sh , $3 parece conter apenas "something" , fazendo com que meu script falhe. Eu estou olhando para longe para passar a string citada com qualquer forma de expansão shell / etc ... O terceiro parâmetro pode conter outros caracteres bash especiais, mas será sempre citado.

    
por Smartelf 10.11.2016 / 19:37

1 resposta

1

Eu não recomendaria isso, mas tente:

eval "./script.sh $(./look_up_args.pl 234)"

Isso deve funcionar, mas lembre-se de que eval avaliará o que ocorre com look_up_args.pl , o que significa que você se deixa vulnerável à injeção de código.

Uma opção melhor seria o sugerido pelo @thrig nos comentários: use um formato de dados padronizado para passar dados entre as ferramentas. Até mesmo uma string delimitada por nova linha seria um bom formato para um pipeline de processamento no estilo de shell.

    
por 10.11.2016 / 20:06