Como faço um loop BASH?

1

Sou muito novo no bash e no Linux e queria saber como fazer um loop bash para que, quando ele for executado, ele pergunte quantas vezes será executado e ele será executado várias vezes.

Eu fiz isso no LUA, mas eu quero que ele esteja no bash, então ele pode ser adicionado ao arquivo ~/.bashrc , então ele inicia quando eu me conecto ao meu VPS via ssh. Aqui está o código lua que escrevi:

    write("How many times should I loop? ")
local Num = tonumber( read() )
for i=1,Num do
   print("Looped "..tostring(i).." time(s).")
end

Aqui está a pequena coisa que adicionarei ao meu ~/.bashrc :

if [[ -n $SSH_CONNECTION ]] ; then
echo example
fi
    
por Dayne Parrott 11.04.2015 / 23:39

2 respostas

2

Aqui está um folheto:

read -p "No of Repetitions?" repeat; for i in $(seq $repeat); do echo "This is $i"; done

Se você deseja executar isso se $SSH_CONNECTION não estiver vazio:

[[ -n $SSH_CONNECTION ]] && read -p "No of Repetitions?" repeat; for i in $(seq $repeat); do echo "This is $i"; done
  • && indica que o próximo comando será executado apenas se o anterior for bem-sucedido ( $?=0 )

  • read -p "No of Repetitions?" repeat solicitará "No of Repetitions?" e salvará a entrada como repeat variable.

  • for i in $(seq $repeat); do echo "This is $i"; done this para o loop usará seq para repetir o número especificado de vezes para realizar o trabalho. Você deve substituir echo "This is $i" com qualquer operação que você deseja executar.

Isso pode ser elaborado como:

if [[ -n $SSH_CONNECTION ]]; then
        read -p "No of Repetitions?" repeat
fi

for i in $(seq $repeat); do
        echo "This is $i" 
done
    
por 11.04.2015 / 23:57
1

Veja se isso ajuda:

#!/bin/bash
echo -n "How many times should I run? "
read numOfTimes
for i in $(seq 1 $numOfTimes);do
echo $i
done

Vamos dividir a explicação em partes:

  • echo -n apresenta a mensagem na tela e lê a mensagem do usuário resposta na variável numOfTimes .
  • Um bash para loop possui a seguinte estrutura: para i em [1 2 3 4 ... n]; fazer X; feito
  • Nesse caso, crio a sequência 1 2 3 4 ... n usando seq , na qual você insere 1 como número inicial e o último elemento, representado pelo valor de $ numOfTimes .

Claro que, em um cenário mais complexo, você deve verificar se a resposta do usuário é numérica e maior que zero, por exemplo, mas acho que esse exemplo fará o truque para o que você deseja realizar.

Fonte: link

    
por 11.04.2015 / 23:53