Como usar o último comando no loop while?

0

Eu estou querendo saber como modificar este código.

ls
while [ 1 > 0 ]
do
fc -s
sleep 1
done

Para fc -s , você pode consultar esta pergunta para detalhes.

A minha pergunta é a seguinte:

  1. Como isso vai funcionar? Se você nomear como test.sh .
  2. Se eu quiser que fc -s represente a primeira linha ls , como vou modificá-lo? Ou seja, eu quero correr ls , depois dormir um segundo, depois ls , depois dormir um segundo, ... É claro que ls pode ser colocado por outro comando.
por eccstartup 18.07.2013 / 13:39

2 respostas

3

Você pode tentar algo nos moldes disso:

 $ cat script.sh
 while sleep 1
 do
     eval "$@"
 done
 $ ls
 $ sh script.sh !!

O script executará o comando passado repetidamente para ele. !! avalia o último comando.

Se você quiser que o comando faça parte do script e não queira digitá-lo em vários locais, tente o seguinte:

 $ cat script.sh
 cmd=ls
 while sleep 1
 do
     eval "$cmd"
 done
 $ sh script.sh
    
por 18.07.2013 / 15:16
4

Por que você não usa o comando watch, que faz exatamente o que você quer? Isto é o que diz no manual:

watch - execute a program periodically, showing output fullscreen

Para executar o comando a cada segundo:

watch -n 1 command
    
por 18.07.2013 / 14:36