0 votos

Cómo comprobar correctamente si una variable está vacía

He creado una función para comprobar si una aplicación está instalada o no:

function test_app_installed {
    local installed_app_to_search="$1"
    local installed_app_search_name
    installed_app_search_name=$(/usr/bin/mdfind "kMDItemContentType == 'com.apple.application-bundle'" |
    /usr/bin/grep -i "$installed_app_to_search")

    if [[ -z "$installed_app_search_name" ]]; then
        echo "false"
    fi
}

La cosa es que estos son los resultados que obtengo:

bash-5.1$ test_app_installed Firefox
false
bash-5.1$ test_app_installed XXX
false
bash-5.1$ test_app_installed
bash-5.1$ 

¿Por qué? Quiero decir que installed_app_search_name está vacío...

1voto

Si $1 está vacío, el | /usr/bin/grep -i "$installed_app_to_search" parte es básicamente un no-op y installed_app_search_name contiene la lista completa de solicitudes devueltas por mdfind .

O en otras palabras: tu prueba es correcta, pero la variable que pruebas no tiene el valor que esperas. Para evitarlo, hay que añadir algo como [[ -z $1 ]] && return al principio.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X