A abordagem cuidadosa
Tente:
while IFS== read -r var value
do
value="${value#\"}"
[ "$var" ] && declare "$var=${value%\"}"
done <myconf
echo "$cli"
Isso produz a saída:
/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh
Como funciona
-
while IFS== read -r var value; doIsso inicia um loop. Ele temporariamente define o separador de campo,
IFS, como um sinal de igual,=. Em seguida, ele lê uma linha e separa a linha nas duas variáveisvarevalue.varé atribuído ao que quer que seja antes do primeiro=evalueobter o que quer que seja após o primeiro=. -
value="${value#\"}"Isso remove o primeiro
"do valor. -
[ "$var" ] && declare "$var=${value%\"}"Se
varnão estiver vazio, em outras palavras, se não tivermos lido uma linha vazia, atribua a variável$varao valor${value%\"}", em que${value%\"}"removerá o% final"de$value. -
done <myconfIsso sinaliza o final do loop e define a entrada dos loops do arquivo
myconf.
A abordagem de confiança
Isso origina o arquivo myconf :
. myconf
echo "$cli"
Isso produz a saída:
/opt/Solartis_Monitoring/JON_CLI/bin/rhq-cli.sh
Como essa abordagem executa o arquivo myconf , é necessário que você confie em quem criou myconf . Se o arquivo myconf contiver algum caractere ativo no shell, os resultados podem não ser o que você deseja.