linux - usuario - Si el archivo existe y no está vacío. Siempre me da el valor falso.
dar permisos a un usuario en linux (2)
Tengo un guión de bash:
echo " enter file name "
read $file
if [ -f "$file" ] && [ -s "$file" ]
then
echo " file does not exist, or is empty "
else
echo " file exists and is not empty "
fi
No importa lo que ingrese como un $file
, me da el valor falso. Incluso puedo ingresar un archivo que ni siquiera existe. Todavía me dará el valor falso. ¿Por qué es eso chicos? Gracias por adelantado
Basta comprobar si hay -s
, porque dice:
ARCHIVO existe y tiene un tamaño mayor a cero.
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
también se cambia su salida, por lo que la salida does not exists
cuando does not exists
un archivo, porque -s
dará TRUE
si el archivo existe Y tiene un size > 0
.
Así que correctamente debes usar:
echo " enter file name "
read file
if [ -s "$file" ]
then
echo " file exists and is not empty "
else
echo " file does not exist, or is empty "
fi
Esto le dará la salida esperada.
También debería ser
read file
en lugar de
read $file
Si quieres más información, te recomiendo leer el http://unixhelp.ed.ac.uk/CGI/man-cgi?test man read
y el de man read
Tenga en cuenta que [ -f "$file" ] && [ -s "$file" ]
devolverá true
si el archivo existe y no está vacío.
Otra opción:
if [[ -f "/path/to/file" && -s "/path/to/file" ]]; then
echo "exist and not empty"
else
echo "not exist or empty";
fi