Cómo comprobar si un arg es un nombre de archivo válido en Shell?
-
11-09-2019 - |
Pregunta
necesito para verificar si los argumentos son los nombres de archivo válidos, es esta la forma correcta de hacerlo? Parece que hice algún error en línea 2, pero no sé dónde.
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
Solución
En primer lugar, se necesita un espacio antes del corchete de cierre. Y usted debe citar sus variables en caso de que haya un espacio en un nombre de archivo.
for i in "${@}"; do
if [ -f "${i}" ]; then
echo "${i}"
else continue
fi
done
El "else continue
" es innecesario, a menos que eso es un marcador de posición para otra cosa va a poner en su lugar de "continue
".
Otros consejos
Aquí es una solución concisa, que funciona incluso si los nombres de archivo contienen espacios:
for i
do
test -f "$i" && echo "$i"
done
Tenga en cuenta que la sentencia for asume los argumentos de línea de comandos, no hay necesidad de escribir más. El comando de prueba es una forma corta de si .. entonces .. fi
f comprueba que $ {i} es un archivo normal.