BASH: passar argumentos para o sub-script

0

Eu tenho um script como este:

#!/bin/bash

. config

./sub-script

Existem muitas variáveis na configuração e não quero passá-las para o sub-scirpt como ./subscript arg1 arg2 ... arg100500 .
Além disso, eu não gosto de uma ideia para source config do sub-script, porque em geral pode não saber onde reside o arquivo de configuração.

Existe alguma outra maneira de disponibilizar a configuração no sub-script?

    
por seelts 26.04.2016 / 12:04

3 respostas

2

Você pode export de suas variáveis:

 VAR=foo
 export VAR

ou:

 export VAR=foo

No entanto, essas variáveis estarão visíveis no ambiente de todos os subprocessos.

    
por 26.04.2016 / 12:16
2

Se você puder definir seu script dessa maneira

#!/bin/bash

. config

. /path/to/sub-script

Quaisquer variáveis inicializadas em config devem ficar disponíveis para o script principal e quaisquer scripts que ele origine.

Explicação

Parece que seu script estava lançando um novo processo de shell não interativo, variáveis de shell inicializadas no script pai não estavam disponíveis - mas as variáveis de ambiente exportadas devem estar disponíveis para o novo processo filho.

    
por 26.04.2016 / 12:17
0

Você pode passar o nome do caminho completo do arquivo de configuração para o sub-script. Por exemplo:

#!/bin/bash

. ./config

./sub-script ./config

O sub-script poderia então fazer algo assim:

cfg="$1"
shift
. "$cfg"

Você pode até ter um padrão para $cfg , apenas no caso de $1 estar vazio.

cfg=${1:-/path/to/default/config}
    
por 26.04.2016 / 14:08