Como dizer ao bash para repetir um script até que seja satisfatório e, em seguida, envie o produto acabado

2

Pretendo repetir este código até o interromper, seja definindo um horário para o qual ele se repete, pressionando ^ c ou configurando o número de iterações e, em seguida, exibindo o resultado da repetição. O código deve ser alimentado em si mesmo, de modo que inserir as variáveis 5 e 2 na primeira vez resultaria em reiniciar o script com 5 e 2,25 como as variáveis. O script ajuda a determinar a raiz quadrada de um número, com um palpite.

#!/bin/bash
echo -n "Please enter the number you need to find the square root for and press [ENTER]: "
read fin
echo -n "Please enter guess and press [ENTER]: "
read gues
var=$(echo "$fin/$gues" | bc -l )
var1=$(echo "$var+$gues" | bc -l )
var2=$(echo "$var1/2" | bc -l )
echo $var2
    
por Hellreaver 04.01.2016 / 18:53

1 resposta

2

Você precisaria colocar esse código em um loop infinito, como:

while 1; do
  # Rest of code
  ...
done

Para parar quando Ctrl + C é atingido, o que você está fazendo é capturar um sinal (concretamente, SIGINT ). Você precisaria definir um trap para que seja acionado quando você acertar essa combinação de chaves.

Para mais informações sobre armadilhas, você pode dar uma olhada aqui , que inclui um exemplo SIGINT e como você pode imprimir qualquer coisa depois de pegá-lo.

trap [COMMANDS] [SIGNALS]

This instructs the trap command to catch the listed SIGNALS, which may be signal names with or without the SIG prefix, or signal numbers. If a signal is 0 or EXIT, the COMMANDS are executed when the shell exits. If one of the signals is DEBUG, the list of COMMANDS is executed after every simple command. A signal may also be specified as ERR; in that case COMMANDS are executed each time a simple command exits with a non-zero status. Note that these commands will not be executed when the non-zero exit status comes from part of an if statement, or from a while or until loop. Neither will they be executed if a logical AND (&&) or OR (||) result in a non-zero exit code, or when a command's return status is inverted using the ! operator.

    
por 04.01.2016 / 18:58

Tags