Como comparo o carimbo de data e hora 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
Imprimi ambos os carimbos de hora, em ordem e isso me dá
1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Então, basicamente, se a comparação não está funcionando, eu acho. Ou, se houver outra maneira legal de fazer o que estou fazendo, entre em contato. O que eu tenho que mudar?
linux
bash
comparison
timestamp
newcoderintown
fonte
fonte
Respostas:
Os operadores para comparar registros de data e hora são:
O mnemônico é fácil: 'mais novo que' e 'mais velho que'.
fonte
Isso ocorre devido a alguns espaços ausentes.
[
é um comando, portanto, deve haver espaços ao seu redor e]
é um parâmetro especial para informar onde sua linha de comando termina. Portanto, sua linha de teste deve se parecer com:fonte
[
é um comando de teste - consulte a seção "EXPRESSÕES CONDICIONAIS" dabash
página de manual. Também há um executável independente no/usr/bin/test
e/usr/bin/[
, mas se você estiver usando o bash e não o caminho completo, estará usando o shell interno.if
não é mágico. Ele tenta executar o comando passado para ele e verifica se o status de saída é zero. Ele também não lida bem com argumentos inexistentes, e é por isso que você deve citar variáveis que estão sendo usadas nele.fonte
fonte