ver usuario una todos quitar propietario propiedades permisos los dar como comandos carpeta cambiar archivos archivo linux bash scripting

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