Como escrever no Linux em Bash em shellscript uma parte que pode fazer algo assim
digite um número
deve estar em um intervalo de 4-999
caso contrário, peça novamente para entrar
número inserido * 5 * número aleatório [1-9] (um dígito)
exibir o resultado e perguntar se está bom
enter - para nova execução (número digitado * 5 * número aleatório [0-9] (dígito único))
y - para sim, ok, continue no script
n - volte ao ponto para "digitar um número" novamente
e - para sair do script
eu sei que com o comando "read" há um prompt para digitar algo e eu sei que with cat /dev/urandom | tr -cd '0-9' | head -c 1
deve se tornar um único dígito aleatório
Este script começa com um loop de entrada (o loop externo
while
). Este é um loop infinito que itera até que as condições fornecidas sejam satisfeitas. As condições para este loop são que o usuário esteja satisfeito com algum valor computado e selecione continuar ou encerrar o script.O valor computado também requer um loop de entrada (o
while
loop interno). Esse loop itera até que a string que o usuário insere no prompt seja algum número entre4
e999
.Uma vez que o usuário tenha inserido uma string satisfatória (um número decimal inteiro no intervalo [4.999]), o valor do resultado é computado e apresentado ao usuário junto com uma seleção de opções. A entrada do usuário é novamente realizada por um loop de entrada, mas neste caso, é um
select
loop (já que estamos apresentando ao usuário um menu de opções para escolher).Se o usuário escolher
1
ouy
, o código sai de ambos os loopsselect
e o outrowhile
usandobreak 2
. Se o usuário escolher2
oun
, o código sai apenas doselect
loop, o que faz com que o programa consulte novamente um número entre4
e999
. Se o usuário selecionar3
oue
, o script termina viaexit
.Supondo que o número que você deseja inserir entre 4 e 999 seja um inteiro:
Ele trata qualquer resposta à pergunta "Isso é bom" diferente de
y
orn
(qualquer caso e opcionalmente seguido por outros caracteres, por exemployes
orNO
) comoe
no caso de não ser óbvio. Não acho que haja algo que eu possa acrescentar para explicar isso, ele apenas faz o que o código claramente faz.