Blog del Podcast
podcast    GitHub    Twitter  Telegram

Saber si existen variables, directorios o archivos con bash

Buscando en internet, he visto este artículo de Linux Center super interesante, sobre si una variable tiene o no un valor.

He copiado parte del artículo para tenerlo siempre accesible.

Ya de pasada, para que el artículo sea más completo, he añadido también la opción de comprobar si existe un directorio o archivo y si estos son ejecutables, tienen permisos...

Para comprobarlo en estos ejemplos, utilizaremos siempre la sentencia if.

Si existe un directorio

Con la opción -d, especificamos el directorio

#+BEGIN_EXAMPLE

#!/bin/bash

DIRECTORIO=/root1

if [ -d "$DIRECTORIO" ]

then

echo "El directorio ${DIRECTORIO} existe"

else

echo "El directorio ${DIRECTORIO} no existe"

fi

#+END_EXAMPLE

Si existe un archivo

Con la opción -f, especificamos el archivo

#+BEGIN_EXAMPLE

#!/bin/bash

ARCHIVO=/etc/passwd

if [ -f $ARCHIVO ]

then

echo "El fichero $ARCHIVO existe"

else

echo "El fichero $ARCHIVO no existe"

fi

#+END_EXAMPLE

Saber si una variable existe

Si existe una variable

Para saber si una variable existe y está inicializada en un script o tu máquina, que esté o no está vacía.

Tomaremos variable""= como ejemplo.

#+BEGIN_EXAMPLE

#!/bin/bash

if [ "$variable" ]

then

echo "La variable existe y no está vacía"

else

echo "La variable no existe o está vacía"

fi

#+END_EXAMPLE

El resultado sería: La variable no existe o está vacía

Variable vacía

#+BEGIN_EXAMPLE

#!/bin/bash

variable=""

if [ "$variable" ]

then

echo "La variable existe y no está vacía"

else

echo "La variable no existe o está vacía"

fi

#+END_EXAMPLE

Resultado: La variable no existe o está vacía

Variable no vacía

#+BEGIN_EXAMPLE

#!/bin/bash

variable="valor"

if [ "$variable" ]

then

echo "La variable existe y no está vacía"

else

echo "La variable no existe o está vacía"

fi

#+END_EXAMPLE

Resultado: La variable existe y no está vacía

Variable con valor y no vacía


#!/bin/bash

variable="valor"

if [ "$variable" ]
then
echo "La variable existe y no está vacía"
else
if [ -n "${variable-unset}" ] 
then
echo "La variable no existe"
else
echo "La variable existe pero está vacía"
fi
fi

Resultado: La variable existe y no está vacía

Y ahora probaremos si la cadena está vacía:

#+BEGIN_EXAMPLE

#!/bin/bash

variable=""

if [ "$variable" ]

then

echo "La variable existe y no está vacía"

else

if [ -n "${variable-unset}" ]

then

echo "La variable no existe"

else

echo "La variable existe pero está vacía"

fi

fi

#+END_EXAMPLE

Resultado: La variable existe pero está vacía

Sin variable (la comento):

#+BEGIN_EXAMPLE

#!/bin/bash

# variable=""

if [ "$variable" ]

then

echo "La variable existe y no está vacía"

else

if [ -n "${variable-unset}" ]

then

echo "La variable no existe"

else

echo "La variable existe pero está vacía"

fi

fi

#+END_EXAMPLE

Resultado: La variable no existe

Fuentes




Powered by org-bash-blog

Written in OrgMode with Emacs and converted to HTML with Pandoc

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.