Os operadores para comparar os carimbos de tempo são:
[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]
O mnemônico é fácil: 'mais recente que' e 'mais antigo que'.
Como eu comparo o timestamp de dois arquivos?
Eu tentei isso, mas não funciona:
file1time='stat -c %Y fil1.txt'
file2time='stat -c %Y file2.txt'
if[$file1time -gt $file2time];
then
doSomething
fi
Eu imprimi os dois carimbos de tempo, em ordem e isso me dá
1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Então, basicamente, se comparação não está funcionando, eu acho. Ou se houver alguma outra maneira legal do que o que estou fazendo, por favor me avise. O que tenho que mudar?
Os operadores para comparar os carimbos de tempo são:
[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]
O mnemônico é fácil: 'mais recente que' e 'mais antigo que'.
Isso é devido a alguns espaços ausentes. [
é um comando, por isso deve ter espaços ao redor dele e o ]
é um parâmetro especial para informar onde a linha de comando termina. Então, sua linha de teste deve se parecer com:
if [ $file1time -gt $file2time ];
if
não é mágica. Ele tenta executar o comando passado para ele e verifica se ele possui um status de saída zero. Ele também não lida bem com argumentos inexistentes, e é por isso que você deve citar variáveis sendo usadas nele.
if [ "$file1time" -gt "$file2time" ]
if ( [ $file1time -gt $file2time ] );
then
doSomething
fi
Tags bash timestamp comparison linux