Como repetir um comando n vezes depois sair?

1

Eu quero automatizar uma instalação e preciso executar o instalador baixado com o gksu. Eu tentei:

attempt=0
  until
  gksu command; do
    attempt=$((attempt + 1))
    if [ "$attempt" -gt 3 ]; then
      exit 1
    fi
  done

mas não sai até atingir a terceira tentativa. Não importa se o gksu saiu com o código de saída 0 ou com um código de saída diferente de zero. O que eu gostaria de ser acontecer é:
while gksu command's exit code is not 0 and attempt number is not 3 repeat gksu command. If exit code is not 0 but attempt number is 3, exit the whole script. If exit code is 0 leave cycle and continue processing the script.
Como eu poderia fazer isso?

    
por user275214 12.09.2016 / 18:43

1 resposta

2

Se você tiver seq disponível, poderá fazer:

for attempt in $(seq 1 3)
do
  gksu command && break
done

Se seq não estiver disponível, mas você tiver (e quiser usar) bash:

for((attempt=1;attempt<=3;attempt++))
do 
  gksu command && break
done

ou até mais simples (dica do chapéu para drewbenn ):

for attempt in {1..3} 
do
  gksu command && break
done
    
por 12.09.2016 / 18:50