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; do
Isso 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áveisvar
evalue
.var
é atribuído ao que quer que seja antes do primeiro=
evalue
obter o que quer que seja após o primeiro=
. -
value="${value#\"}"
Isso remove o primeiro
"
do valor. -
[ "$var" ] && declare "$var=${value%\"}"
Se
var
não estiver vazio, em outras palavras, se não tivermos lido uma linha vazia, atribua a variável$var
ao valor${value%\"}"
, em que${value%\"}"
removerá o% final"
de$value
. -
done <myconf
Isso 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.