Bem, se eu precisar reescrever o arquivo, pelo menos sed
me permitirá fazer isso com estilo:
sed -i '1 { h; d }; $ G' file
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?