¿Cómo comparo la marca de tiempo de dos archivos?
Intenté esto pero no funciona:
file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
doSomething
fi
Imprimí las dos marcas de tiempo, en orden y me da
1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Básicamente, si la comparación no funciona, supongo. O si hay alguna otra forma agradable de lo que estoy haciendo, hágamelo saber. ¿Qué tengo que cambiar?
linux
bash
comparison
timestamp
Newcoderintown
fuente
fuente
Respuestas:
Los operadores para comparar marcas de tiempo son:
Lo mnemotécnico es fácil: 'más nuevo que' y 'más viejo que'.
fuente
Esto se debe a algunos espacios faltantes.
[
es un comando, por lo que debe tener espacios a su alrededor y]
es un parámetro especial para indicarle dónde termina su línea de comando. Entonces, su línea de prueba debería verse así:fuente
[
es un comando de prueba: consulte la sección "EXPRESIONES CONDICIONALES" de labash
página del manual. También hay un ejecutable independiente en/usr/bin/test
y/usr/bin/[
, pero si estás usando bash y no estás usando la ruta completa, estás usando el shell incorporado.if
No es magia. Intenta ejecutar el comando que se le pasa y comprueba si tiene un estado de salida cero. Tampoco maneja bien los argumentos inexistentes, por lo que debe citar las variables que se utilizan en él.fuente
fuente