Transformar Array em Variáveis [RESOLVIDO]

1. Transformar Array em Variáveis [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 19/01/2022 - 16:01h

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 



  


2. Re: Transformar Array em Variáveis

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 19/01/2022 - 16:35h

Eu entendi q vc colocou o cifrão entre aspas simples e isso faz com q o bash interprete o cifrão como literal. remova-o das aspas simples (deixe sem) e teste novamente. Deixe assim:

arrayFlatpak[$posArray]=$"programas_"${arrayProgramas[i]}"_inst_flatpak" 


--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Transformar Array em Variáveis [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 19/01/2022 - 16:51h

Não funcionou eu alterei a linha removendo as ' ' do cifrão:

arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak" 


para

arrayFlatpak[$posArray]=$"programas_"${arrayProgramas[i]}"_inst_flatpak" 


então no final o resultado foi:
flatpak install programas_chromium_inst_flatpak programas_audacious_inst_flatpak programas_audacity_inst_flatpak 



4. Re: Transformar Array em Variáveis

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 19/01/2022 - 17:09h

Já tentou colocar o cifrão dentro das aspas duplas, junto com o "programas"?


--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Transformar Array em Variáveis [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 17:29h


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: Transformar Array em Variáveis

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 19/01/2022 - 17:32h

O caso é que este script é uma parte de um todo bem maior que exige esta "complicação". Porém pra não poluir o tópico achei por bem postar só o trecho com o problema.

msoliver escreveu:


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________





7. Re: Transformar Array em Variáveis [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 19/01/2022 - 17:38h

Fiz assim e deu certo. Teste aí!

arrayFlatpak[$posArray]="$programas_${arrayProgramas[i]}_inst_flatpak" 



--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


8. Re: Transformar Array em Variáveis [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 19/01/2022 - 17:54h

Extranho, fiz como falastes e não funcionou, inclusive adicionei um echo no array pra ver a saída e continua igual, segue minha execução

https://asciinema.org/a/AggZHreh8SczErwwl67dTz0zd

renato_pacheco escreveu:

Fiz assim e deu certo. Teste aí!

arrayFlatpak[$posArray]="$programas_${arrayProgramas[i]}_inst_flatpak" 



--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh





9. Re: Transformar Array em Variáveis

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 17:56h

robertofgama escreveu:

O caso é que este script é uma parte de um todo bem maior que exige esta "complicação". Porém pra não poluir o tópico achei por bem postar só o trecho com o problema.

msoliver escreveu:


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Para atribuir o valor das MATRIZES: # Lista de programas
Na arrayFlatpak,
Utilize a Expansão de variáveis
arrayFlatpak=(${!programas_*}); 



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



10. Re: Transformar Array em Variáveis [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 19/01/2022 - 18:23h

Tu se refere em fazer a substituição no comando final? Fiz desta forma e não funcionou também, como pode ver abaixo:

https://asciinema.org/a/xeclKcRUKhZKgdw7mxb8vy0gU

msoliver escreveu:

robertofgama escreveu:

O caso é que este script é uma parte de um todo bem maior que exige esta "complicação". Porém pra não poluir o tópico achei por bem postar só o trecho com o problema.

msoliver escreveu:


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Para atribuir o valor das MATRIZES: # Lista de programas
Na arrayFlatpak,
Utilize a Expansão de variáveis
arrayFlatpak=(${!programas_*}); 



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________





11. Re: Transformar Array em Variáveis

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/01/2022 - 20:00h

robertofgama escreveu:

Tu se refere em fazer a substituição no comando final? Fiz desta forma e não funcionou também, como pode ver abaixo:

https://asciinema.org/a/xeclKcRUKhZKgdw7mxb8vy0gU

msoliver escreveu:

robertofgama escreveu:

O caso é que este script é uma parte de um todo bem maior que exige esta "complicação". Porém pra não poluir o tópico achei por bem postar só o trecho com o problema.

msoliver escreveu:


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Para atribuir o valor das MATRIZES: # Lista de programas
Na arrayFlatpak,
Utilize a Expansão de variáveis
arrayFlatpak=(${!programas_*}); 



CORREÇÃO:
Com o comando:
arrayFlatpak=(${!programas_*}); 

São obtidos somente os nomes das variáveis.
Para resolver a variável, faça:
for app in ${!programas_*};do 
echo "Var: ${app} Valor: ${!app}"
done


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



12. Re: Transformar Array em Variáveis [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 20/01/2022 - 16:10h

Parece que a solução que apresentou resolveu parcialmente o problema, porém não consigo selecionar quais as variáveis presentes no no array. Para facilitar o entendimento deixa eu explicar os passo que o script quer chegar:

1) Armazenar os nomes corretos de cada flatpak em uma variável específica com o prefixo de programa_ sucedido por o NOME_DO_PROGRAMA (chrome, java, gimp e etc) e após o sufixo _inst_flatpak, conforme abaixo:

- programas_NOME_DO_PROGRAMA_inst_flatpak="NOME_CORRETO_DO_PACOTE_DO_PROGRAMA"

2) Armazenar quais os softwares que instalarei com um nome simples dentre os presentes nas variáveis do passo um em um array (chamado arrayProgramas), ou seja, em vez de eu armazenar a variável inteira como programas_chromium_inst_flatpak eu armazeno somente chromium

3) Pegar cada nome de dentro do array do passo 2 e formar a variável completa juntando com PREFIXO + PROGRAMA DO ARRAY + SUFIXO, armazenando em um novo array (chamado arrayFlatpak). Esta parte que uso o laço FOR

4) Montar o comando de instalação com o conteúdo das variáveis presentes no array arrayFlatpak criado no passo 3.

Dessa forma o resultado final do script em que o arrayProgramas contivesse as posições "chromium" "audacious" "audacity" seria:
flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


Obs1: Anexo um desenho para ser mais compreensível.

Obs2: Ele precisa seguir este fluxo pois como disse antes faz parte de um programa um pouco maior em que essas variáveis são criadas com base em um yaml por isso tem essa estrutura.

msoliver escreveu:

robertofgama escreveu:

Tu se refere em fazer a substituição no comando final? Fiz desta forma e não funcionou também, como pode ver abaixo:

https://asciinema.org/a/xeclKcRUKhZKgdw7mxb8vy0gU

msoliver escreveu:

robertofgama escreveu:

O caso é que este script é uma parte de um todo bem maior que exige esta "complicação". Porém pra não poluir o tópico achei por bem postar só o trecho com o problema.

msoliver escreveu:


robertofgama escreveu:

Olá pessoal, estou criando um script para a automação da instalação de alguns programas, conforme pode ser visto abaixo, porém o resultado final dele não consigo ler as variáveis presentes no array. Se alguém puder me dar uma dica do que estou fazendo errado ficaria grato.


# Lista de programas
programas_chromium_inst_flatpak=("org.chromium.Chromium")
programas_apostrophe_inst_flatpak=("org.gnome.gitlab.somas.Apostrophe")
programas_audacious_inst_flatpak=("org.atheme.audacious")
programas_audacity_inst_flatpak=("org.audacityteam.Audacity")

arrayProgramas=( "chromium" "audacious" "audacity" )

declare -a arrayFlatpak

for i in "${!arrayProgramas[@]}"
do
posArray=$((${#arrayFlatpak[@]} +1 ))
arrayFlatpak[$posArray]='$'"programas_"${arrayProgramas[i]}"_inst_flatpak"
done

flatpak install ${arrayFlatpak[@]}




Resultado esperado do ultimo comando (flatpak install ${arrayFlatpak[@]}) seria:

flatpak install org.chromium.Chromium org.atheme.audacious org.audacityteam.Audacity 


porém ao invés disso estou recebendo o seguinte resultado:

flatpak install  $programas_chromium_inst_flatpak $programas_audacious_inst_flatpak $programas_audacity_inst_flatpak 

Boa tarde,
Sinceramente, não entendi o motivo de "complicar o que é simples".....
Se você já tem as variáveis em:
# Lista de programas
Somente atribua de forma correta:
#!/bin/bash
# Lista de programas
programa=("org.chromium.Chromium" "org.gnome.gitlab.somas.Apostrophe" "org.atheme.audacious" "org.audacityteam.Audacity");
flatpak install ${programa[@]}



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



Para atribuir o valor das MATRIZES: # Lista de programas
Na arrayFlatpak,
Utilize a Expansão de variáveis
arrayFlatpak=(${!programas_*}); 



CORREÇÃO:
Com o comando:
arrayFlatpak=(${!programas_*}); 

São obtidos somente os nomes das variáveis.
Para resolver a variável, faça:
for app in ${!programas_*};do 
echo "Var: ${app} Valor: ${!app}"
done


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________






01 02