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
______________________________________________________________________