Chamando um script em cada linha de um arquivo

3

Eu tenho um script bash que leva 3 argumentos:

$ do_something foo bar baz

e um arquivo com várias linhas, cada uma com três argumentos diferentes.

Eu quero executar o script como um cronjob, e cada vez que ele é chamado, ele deve chamar do_something em uma linha nesse arquivo, passando os três argumentos nessa linha. Da próxima vez que for chamado, ele deverá executar a próxima linha, por isso, serão necessárias n chamadas para do_something para processar n linhas. Se processou a última linha do arquivo, ele deve começar novamente no início da próxima vez.

Minha solução é remover a linha processada da cabeça do arquivo a cada vez e anexá-la à cauda, mas me parece muito complicado ter todas essas gravações em disco apenas para lembrar uma posição. Eu poderia ter outro arquivo ao redor com um ponteiro para a última linha, mas três arquivos para uma tarefa simples não são tão inteligentes. Existe uma solução melhor?

    
por neurino 15.12.2011 / 16:36

1 resposta

2

Bem, se eu precisar reescrever o arquivo, pelo menos sed me permitirá fazer isso com estilo:

sed -i '1 { h; d }; $ G' file
    
por 15.12.2011 / 16:57

Tags