Exportando Variáveis e definindo Variáveis Globais no Bash [closed]

1

Meu objetivo é criar uma lista de variáveis que podem ser chamadas ou referenciadas por qualquer script de teste que esteja sendo executado. Existem muitos scripts de teste no sistema, mas as variáveis são complicadas e difíceis de entender. Para cada tipo de configuração, existem nomes de variáveis diferentes para a mesma coisa. Quero renomear as variáveis e modificar os scripts de teste para fazer referência às mesmas variáveis, para facilitar a compreensão.

Aqui está um exemplo de como uma variável é definida em um script:

RightNumberOfDevices=$( lspci -n | egrep --count "8086:[[xdigitx]][xxdigit]][[:xdigit:]][[:xdigit:]]" )

Em outro script, veremos isto:

TotalNumberOfDevices=$( lspci -n | egrep --count "8086:[[xdigitx]][xxdigit]][[:xdigit:]][[:xdigit:]]" )

Eu quero poder declarar TotalNumberOfDevices em algum tipo de script de inicialização para que o valor dessa variável possa ser acessado em todo o ambiente.

Este é o código que estou tentando implementar:

ethcounter=$(ifconfig -a | egrep --count "eth[0-9]+")
ethindex0=$((ethcounter-1))

declare -a eth                  #This declares that "eth" is an array variable

for ((i=0; i<=ethindex0; i++))
 do
        eth[$i]=$(ifconfig eth$i | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' )
        echo "eth[$i]" = "${eth[$i]}"
        set ${eth[$i]}
 done

Tudo o que estou tentando fazer é armazenar os endereços IP de cada dispositivo Ethernet e disponibilizá-los para outros scripts.

    
por WeSC 16.01.2016 / 02:48

1 resposta

3

Variáveis globais vs. locais é uma diferença somente dentro de um shell (com relação às funções do shell).

Variáveis exportadas vs. não exportadas é uma diferença para subprocessos (não apenas sub-unidades) do shell somente (somente variáveis exportadas se tornam variáveis de ambiente para subprocessos).

    
por 16.01.2016 / 03:57