Chamando valores de um arquivo .properties?

1

Agora eu tenho um script simples que eu quero agora chamar um arquivo .properties e, em seguida, imprimir os resultados desse arquivo, isso é o que eu tenho até agora

#Specific Set Variables 
SpecficStatus="Pass" #SetVariable 
timestamp() { date +"%a %d %b %Y %T %Z"; }
SpecficDate=$(timestamp)

echo $SpecficStatus
echo $SpecficDate

#Properties Call
file="savedState.properties"

#Echo out the file

while read LINE; do echo "$LINE"; done < savedState.properties

O que está no meu arquivo savedState.properties

WD_MANAGEGOLD_DATETIMESTAMP=Wed 20 May 2015 13:50:51 UTC
WD_MANAGEGOLD_SUCCESS=false
WD_MANAGERC_DATETIMESTAMP=Wed 20 May 2015 13:50:51 UTC
WD_MANAGERC_SUCCESS=false

Como você pode ver no script eu posso chamar o arquivo e imprimir os resultados, mas o que eu quero é poder escolher quais valores e armazená-los como variáveis para uso posterior no script ??

Qualquer ajuda seria ótima

    
por Jamiex304 20.05.2015 / 17:11

2 respostas

2

Você pode exportá-los assim.

#!/bin/bash
#Specific Set Variables 
SpecficStatus="Pass" #SetVariable 
timestamp() { date +"%a %d %b %Y %T %Z"; }
SpecficDate=$(timestamp)

echo $SpecficStatus
echo $SpecficDate

#Properties Call
file="savedState.properties"
#Echo out the file


while IFS== read -r VAR1 VAR2
do
    #echo "VAR1=$VAR1 : VAR2=$VAR2"
    export "$VAR1=$VAR2"
done < savedState.properties

echo "$WD_MANAGEGOLD_DATETIMESTAMP"
echo "$WD_MANAGEGOLD_SUCCESS"
echo "$WD_MANAGERC_DATETIMESTAMP"
echo "$WD_MANAGERC_SUCCESS"

Isto imprime:

Pass
Wed 20 May 2015 12:24:26 EDT
Wed 20 May 2015 13:50:51 UTC
false
Wed 20 May 2015 13:50:51 UTC
false
    
por rahul 20.05.2015 / 18:26
0

Usando grep , para armazenar, p. Valor de WD_MANAGEGOLD_DATETIMESTAMP em uma variável wd_managegold_datetimestamp e valor de WD_MANAGEGOLD_SUCCESS em uma variável wd_managegold_success :

#!/bin/bash

# ...
wd_managegold_datetimestamp=$(< savedState.properties grep -Po '^WD_MANAGEGOLD_DATETIMESTAMP=\K.*')
wd_managegold_success=$(< savedState.properties grep -Po '^WD_MANAGEGOLD_SUCCESS=\K.*')
# ...

Mas, nesse caso, pode ser conveniente armazenar valores relacionados em uma matriz, portanto, para armazenar, e. todos os valores WD_MANAGEGOLD e WD_MANAGERC em dois arrays wd_managegold e wd_managerc :

#!/bin/bash

# ...
IFS=$'\n\r' GLOBIGNORE='*' wd_managegold=($(< savedState.properties grep -Po '^WD_MANAGEGOLD_.*=\K.*'))
IFS=$'\n\r' GLOBIGNORE='*' wd_managerc=($(< savedState.properties grep -Po '^WD_MANAGERC_.*=\K.*'))
# ...
  • IFS=$'\n\r' : Define o separador de campo interno de bash para o caractere de nova linha e o caractere de retorno de carro, para que cada valor separado de nova linha / retorno seja armazenado em um único campo de matriz; >

  • GLOBIGNORE='*' : define bash da variável builtin GLOBIGNORE como * , para que os valores correspondentes a nomes de arquivos especiais não sejam tratados especialmente

por kos 20.05.2015 / 18:32