Pular para o conteúdo

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

Responder tópico
  • Denunciar
  • Indicar

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

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

Responder tópico

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

Melhor resposta

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]

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]

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

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder