Проблема с настройкой сервера шлюза на Centos 7

Su pregunta es bastante obstinada, sin embargo, en mi opinión, la lógica de dash tiene más sentido. Si desea comparar si un archivo es más nuevo que otro, ambos archivos existentes deben ser un requisito. Sin embargo, este claramente no es el caso como se indica en el manual de bash.

6.4 Expresiones condicionales bash

file1 -nt file2

True if file1 is newer (according to modification date) than file2, or if file1 exists and file2 does not.

Página man de Dash

file1 -nt file2

True if file1 and file2 exist and file1 is newer than file2.


why should that be needed?

¿Por qué deben existir ambos archivos? Una mejor pregunta es ¿por qué no? ¿Por qué querría comparar si el archivo 1 es más nuevo que un archivo inexistente? Es solo una forma complicada de probar si existe file1. Si realmente está tratando de comparar si un archivo es más nuevo que otro, probablemente sea un problema que debería causar un error si falta uno de esos archivos.


¿Tendría sentido con otros operadores de comparación?

Comparar un archivo con un archivo inexistente es como comparar un número entero con un valor nulo. ¿Tendría sentido si [[ 1 -gt "" ]]se evaluara como verdadero? Bueno, Bash cree que eso también tiene sentido...

$ bash -c '[[ 1 -gt "" ]] && echo yes'
yes
$ dash -c '[ 1 -gt "" ] && echo yes'
dash: 1: [: Illegal number:
$ sh -c '[ 1 -gt "" ] && echo yes'
sh: line 0: [: : integer expression expected

1
12.10.2017, 16:41
0 ответов

Теги

Похожие вопросы