Para responder a la pregunta planteada en el título sucintamente:
if [[ "$foo" -lt "$bar" ]]; then echo "$foo is less than $bar" fi
Las pruebas para comparaciones de enteros son:
n1 -eq n2 True if the integers n1 and n2 are algebraically equal. n1 -ne n2 True if the integers n1 and n2 are not algebraically equal. n1 -gt n2 True if the integer n1 is algebraically greater than the integer n2. n1 -ge n2 True if the integer n1 is algebraically greater than or equal to the integer n2. n1 -lt n2 True if the integer n1 is algebraically less than the inte- ger n2. n1 -le n2 True if the integer n1 is algebraically less than or equal to the integer n2.
Usando e. gramo. <
o >
hace una comparación de orden ASCII, por lo que [[ 0100 < 100 ]]
será verdadero.
Comentarios
Bueno, corregí el error tipográfico, que ciertamente estaba rompiendo el programa, y Arreglé la sintaxis del operador, y definitivamente también la rompí. Sin embargo (y esto puede parecer ridículo), una vez que corrigí esos problemas, realicé la operación valid=${#validCheck}
manualmente para probar la longitud de la cadena por si acaso y encontré que la longitud del directorio en realidad tenía 45 caracteres, no 46. Me siento como un tonto en este momento, pero me alegro de que el problema se haya resuelto y pueda pasar a funciones más urgentes. Gracias a ambos por sus correcciones a mis errores tipográficos y gracias a Richard por su sugerencia de herramientas chroot jail.