Estoy de acuerdo con las otras respuestas con respecto a la forma correcta de recorrer los archivos. Sin embargo, el OP preguntó:
El código anterior no funciona, ¿sabes por qué?
¡Si!
Un artículo excelente ¿Cuál es la diferencia entre prueba, [y [[?] Explica en detalle que, entre otras diferencias, no se puede usar expression matching
o pattern matching
dentro del test
comando (que es la abreviatura de [
)
Característica nueva prueba [[prueba anterior [Ejemplo
Coincidencia de patrones = (o ==) (no disponible) [[$ nombre = a *]] || echo "el nombre no comienza con una 'a': $ nombre"
Expresión regular = ~ (no disponible) [[$ (fecha) = ~ ^ Vie \ ... \ 13]] && echo "¡Es viernes 13!"
pareo
Entonces, esta es la razón por la que falla su script. Si el OP está interesado en una respuesta con la [[
sintaxis (que tiene la desventaja de no ser compatible con tantas plataformas como el [
comando), me complacería editar mi respuesta para incluirla.
EDITAR: ¡Cualquier sugerencia sobre cómo formatear los datos en la respuesta como una tabla sería útil!
for i in $(ls *.java); do echo "do something with file $i"; done
?