Como fazer esse loop ??? [RESOLVIDO]

1. Como fazer esse loop ??? [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 22/04/2018 - 23:29h

Pessoas ... tenho 'n' arquivos .deb no diretório ..

1 - Tenho q lista-los para instalação ou reistalação
ls *.deb | cut -d'_' -f1 

2 - como coloca-los nessa estrutura ???

situation=$(apt list programa | awk '{ print $4 }')

funcao () {

dpkg -i programa*.deb

if [ "$situation" == "[installed]" ] ; then
echo -e "\033[1;32m programa instalado com sucesso ... prosseguindo !!! \033[0m"
sleep 1
else
echo -e "\033[1;31m Erro na instalação do programa ... saindo !!! \033[0m"
sleep 1
exit
fi
}

if [ "$situation" == "[installed]" ] ; then
echo -e "\033[1;32m programa já está instalado, deseja reinstalar ? [s]im [n]ão !!! \033[0m"
read opcao
if [ $opcao == "s" ] ; then
funcao
fi
else
funcao
fi



  


2. MELHOR RESPOSTA

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 23/04/2018 - 11:22h

Não testei...
for pkg in `ls *.deb | cut -d'_' -f1`
do
situation=$(dpkg-query --list $pkg | egrep -wo "ii|un")

if [ "$situation" = "un" ] ; then
echo -e "\033[1;32m Programa não instalado... instalando!!! \033[0m"
sleep 1
dpkg -i $pkg*.deb

elif [ "$situation" = "ii" ] ; then
echo -e "\033[1;32m Programa já está instalado, deseja reinstalar ? [s]im [n]ão !!! \033[0m"
read opcao
if [ $opcao == "s" ] ; then
dpkg -i $pkg*.deb
fi
else
echo "Nada a fazer!!!"
fi
done


3. Re: Como fazer esse loop ??? [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 23/04/2018 - 18:14h

Depois de uns trocentos erros na verificação, até q enfim consegui deixar a carniça do jeito que eu quero !!!

#!/bin/bash

path="../Programas/Debian/init"

for pacote in `ls $path/*.deb | cut -d'/' -f5 | cut -d'_' -f1`
do

funcao () {

dpkg -i $path/$pacote*.deb

if which -a "$pacote" ; then
echo -e "\033[1;32m $pacote instalado com sucesso ... prosseguindo !!! \033[0m"
sleep 1
else
echo -e "\033[1;31m Erro na instalação do $pacote ... saindo !!! \033[0m"
sleep 1
exit
fi

}

if which -a "$pacote" ; then
echo -e "\033[1;32m $pacote já está instalado, deseja reinstalar ? [s]im [n]ão !!! \033[0m"
read opcao
if [ $opcao == "s" ] ; then
echo -e "\033[1;32m Ok, reinstalando $pacote !!! \033[0m"
sleep 1
funcao
else
echo -e "\033[1;32m Ok, abortando !!! \033[0m"
fi
else
echo -e "\033[1;32m $pacote não instalado, aguarde !!! \033[0m"
sleep 1
funcao
fi
done

exit 0


@Ryuk >> valew pelo 'for' !!!
@SamL >> valew pela força ... sou bem fraquinho nessa parada de programação, depois vou ler com krinho teu post para ver se eu consigo assimilar algo ... por enquanto pelo meu futebol não consegui entender muita coisa não !!!

OBS: Coloquei um "exit 0" no final do script ... é necessário ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: Como fazer esse loop ??? [RESOLVIDO]

Marcos Valério
luke skywalker

(usa Debian)

Enviado em 24/04/2018 - 05:12h

Mauriciodez escreveu:

Depois de uns trocentos erros na verificação, até q enfim consegui deixar a carniça do jeito que eu quero !!!

#!/bin/bash

path="../Programas/Debian/init"

for pacote in `ls $path/*.deb | cut -d'/' -f5 | cut -d'_' -f1`
do

funcao () {

dpkg -i $path/$pacote*.deb

if which -a "$pacote" ; then
echo -e "\033[1;32m $pacote instalado com sucesso ... prosseguindo !!! \033[0m"
sleep 1
else
echo -e "\033[1;31m Erro na instalação do $pacote ... saindo !!! \033[0m"
sleep 1
exit
fi

}

if which -a "$pacote" ; then
echo -e "\033[1;32m $pacote já está instalado, deseja reinstalar ? [s]im [n]ão !!! \033[0m"
read opcao
if [ $opcao == "s" ] ; then
echo -e "\033[1;32m Ok, reinstalando $pacote !!! \033[0m"
sleep 1
funcao
else
echo -e "\033[1;32m Ok, abortando !!! \033[0m"
fi
else
echo -e "\033[1;32m $pacote não instalado, aguarde !!! \033[0m"
sleep 1
funcao
fi
done

exit 0


@Ryuk >> valew pelo 'for' !!!
@SamL >> valew pela força ... sou bem fraquinho nessa parada de programação, depois vou ler com krinho teu post para ver se eu consigo assimilar algo ... por enquanto pelo meu futebol não consegui entender muita coisa não !!!

OBS: Coloquei um "exit 0" no final do script ... é necessário ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

Olá, amigo !

Que bom que encontrou uma solução para o seu problema. Quanto ao "exit 0", pode deixá-lo ali mesmo. Todo comando que vc executa, é retornado um status de saída. No caso, zero significa que teve êxito, status 1 significa erro geral desconhecido. Então vc coloca exit 0 para o programa terminar com status de êxito e exit 1 para para ele fechar caso ocorra um erro. Para vc ver o status de saída, basta dar um echo $? ao fim de cada comando que vc deu. Bom se vc já sabia disso, me desculpe pelo textão hahaha, mas se vc não sabia, aconselho estudar sobre isso, pois é fundamental se vc estiver aprendendo Shell script.



5. Re: Como fazer esse loop ??? [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 24/04/2018 - 15:18h

luke skywalker escreveu:
Olá, amigo !

Que bom que encontrou uma solução para o seu problema. Quanto ao "exit 0", pode deixá-lo ali mesmo. Todo comando que vc executa, é retornado um status de saída. No caso, zero significa que teve êxito, status 1 significa erro geral desconhecido. Então vc coloca exit 0 para o programa terminar com status de êxito e exit 1 para para ele fechar caso ocorra um erro. Para vc ver o status de saída, basta dar um echo $? ao fim de cada comando que vc deu. Bom se vc já sabia disso, me desculpe pelo textão hahaha, mas se vc não sabia, aconselho estudar sobre isso, pois é fundamental se vc estiver aprendendo Shell script.


valew aí pela idéia ... eu não sabia dessas paradas não .. se por ventura vc tiver alguns bons completos tutos de shell posta aí pra gente .. o pouquíssimo q sei são meros gatos pingados !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: Como fazer esse loop ??? [RESOLVIDO]

Marcos Valério
luke skywalker

(usa Debian)

Enviado em 24/04/2018 - 23:08h

Mauriciodez escreveu:

luke skywalker escreveu:
Olá, amigo !

Que bom que encontrou uma solução para o seu problema. Quanto ao "exit 0", pode deixá-lo ali mesmo. Todo comando que vc executa, é retornado um status de saída. No caso, zero significa que teve êxito, status 1 significa erro geral desconhecido. Então vc coloca exit 0 para o programa terminar com status de êxito e exit 1 para para ele fechar caso ocorra um erro. Para vc ver o status de saída, basta dar um echo $? ao fim de cada comando que vc deu. Bom se vc já sabia disso, me desculpe pelo textão hahaha, mas se vc não sabia, aconselho estudar sobre isso, pois é fundamental se vc estiver aprendendo Shell script.


valew aí pela idéia ... eu não sabia dessas paradas não .. se por ventura vc tiver alguns bons completos tutos de shell posta aí pra gente .. o pouquíssimo q sei são meros gatos pingados !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



Aki tá o link do livro Júlio Cezar Neves, um ninja do Shell hahaha.

https://docgo.net/philosophy-of-money.html?utm_source=livro-programacao-em-shell-linux-8-edicao-juli...

Vc pode dar uma conferida nos vídeos da bóson treinamentos, que tem ótimos vídeos sobre Shell script e Linux.
Tem o canal do slackjeff no YouTube que também tem muito material sobre Shell script









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts