Reiniciar um Comando Dentro de um Shell Script em Caso de Erro [RESOLVIDO]

1. Reiniciar um Comando Dentro de um Shell Script em Caso de Erro [RESOLVIDO]

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 09/06/2022 - 10:35h

Olá amigos do VOL

Estou desenvolvendo um script de instalação do Arch Linux, para uso pessoal porém nada impede de eu compartilhá-lo com mais pessoas....

E pra isso eu estou criando variáveis para o usuário digitar nome, senha, escolher pacotes, etc

A princípio estou utiizando a seguinte lógica:

echo -e "#### DRIVER DE VIDEO ####"

echo -e "\n"

echo -e "1 - AMDGPU"

echo -e "2 - ATI"

echo -e "3 - Intel"

echo -e "4 - Nouveau (Nvidia Open Source)"

echo -e "5 - Nvidia (Proprietário)"

echo -e "6 - VMWARE"

echo -e "\n"

read -p "Escolha um Driver de Vídeo : " DRIVER

case $DRIVER in

1)
pacman -S xf86-video-amdgpu ;;

2)
pacman -S xf86-video-ati ;;

3)
pacman -S xf86-video-intel ;;

4)
pacman -S xf86-video-nouveau ;;

5)
pacman -S xf86-video-nvidia ;;

6)
pacman -S xf86-video-vmware ;;

*)
echo "Opção Inválida" ;;

esac


Do jeito que está atualmente, o usuário irá digitar o número correspondente ao Driver, e caso digite algo inválido, o Script retornará "Opção Inválida" e irá encerrar....

Porém esse é o ponto.... Eu gostaria que, caso o usuário digite algo inválido, o Script repita a etapa (Nesse caso, a seleção do Driver) ao invés de encerrar....

Existe alguma maneira de fazer isso? Até que o usuário digite algo correto, o Script fique repetindo a etapa?

Abraços a todos


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/06/2022 - 19:33h


eusouobn escreveu:


msoliver escreveu:

Boa tarde.
Segue sugestão:
#!/bin/bash
printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Driver de Vídeo: '
select drive in {AMDGPU,ATI,INTEL,Nouveau,Nvidia,VMWARE};do
case $drive in
AMDGPU|ATI|INTEL|Nouveau|Nvidia|VMWARE)
echo -e "Opção: ${drive,,}\nexecute:\npacman -S xf86-video-${drive,,}";;
*) echo -e "\e[1;38mErro\e[m\nEscolha uma Opção válida.";continue;;
esac
break;
done

execute da seguinte forma:
./script.sh
----------------------------------------------------------------------------------------------------------------
Pode ser útil:
lspci -v|sed -n '/VGA/,/^$/p' 

----------------------------------------------------------------------------------------------------------------


_____________________________________________________________________
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
______________________________________________________________________


Sensacional mano, muito obrigado

Eu comecei com um Script "Automatizado" utilizando um comando parecido com a sua sugestão em "Pode ser útil".... O Script detecta o fabricante (Intel, AMD, Nvidia, etc) e instala o driver automaticamente.....

Agora estou desenvolvendo um que seja "Manual" e dê várias opções para o usuário escolher, como: Driver de video, Hostname, Kernel, Swap, etc

E está ficando top hehehe

Mto obrigado pela dica

Te desejo tudo de melhor 
, sempre

Muito cuidado com "deixar o usuário escolher", pode dar M_R_A
Se não for pedir muito, marque o tópico como resolvido, e, escolha a Melhor Resposta,
Dessa forma, me ajuda, e também ao outros com a mesma dúvida.....
Agradeço pelos votos, tô precisado,...

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Reiniciar um Comando Dentro de um Shell Script em Caso de Erro [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/06/2022 - 17:16h

Boa tarde.
Segue sugestão:
#!/bin/bash
printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Driver de Vídeo: '
select drive in {AMDGPU,ATI,INTEL,Nouveau,Nvidia,VMWARE};do
case $drive in
AMDGPU|ATI|INTEL|Nouveau|Nvidia|VMWARE)
echo -e "Opção: ${drive,,}\nexecute:\npacman -S xf86-video-${drive,,}";;
*) echo -e "\e[1;38mErro\e[m\nEscolha uma Opção válida.";continue;;
esac
break;
done

execute da seguinte forma:
./script.sh
----------------------------------------------------------------------------------------------------------------
Pode ser útil:
lspci -v|sed -n '/VGA/,/^$/p' 

----------------------------------------------------------------------------------------------------------------


_____________________________________________________________________
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
______________________________________________________________________



4. Re: Reiniciar um Comando Dentro de um Shell Script em Caso de Erro [RESOLVIDO]

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 09/06/2022 - 17:41h


msoliver escreveu:

Boa tarde.
Segue sugestão:
#!/bin/bash
printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Driver de Vídeo: '
select drive in {AMDGPU,ATI,INTEL,Nouveau,Nvidia,VMWARE};do
case $drive in
AMDGPU|ATI|INTEL|Nouveau|Nvidia|VMWARE)
echo -e "Opção: ${drive,,}\nexecute:\npacman -S xf86-video-${drive,,}";;
*) echo -e "\e[1;38mErro\e[m\nEscolha uma Opção válida.";continue;;
esac
break;
done

execute da seguinte forma:
./script.sh
----------------------------------------------------------------------------------------------------------------
Pode ser útil:
lspci -v|sed -n '/VGA/,/^$/p' 

----------------------------------------------------------------------------------------------------------------


_____________________________________________________________________
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
______________________________________________________________________


Sensacional mano, muito obrigado

Eu comecei com um Script "Automatizado" utilizando um comando parecido com a sua sugestão em "Pode ser útil".... O Script detecta o fabricante (Intel, AMD, Nvidia, etc) e instala o driver automaticamente.....

Agora estou desenvolvendo um que seja "Manual" e dê várias opções para o usuário escolher, como: Driver de video, Hostname, Kernel, Swap, etc

E está ficando top hehehe

Mto obrigado pela dica

Te desejo tudo de melhor, sempre






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts