0 votes

Comment vérifier correctement si une variable est vide

J'ai créé une fonction pour tester si une application est installée ou non :

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
}

Le truc, c'est que c'est le résultat que j'obtiens :

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$ 

Pourquoi ? Je veux dire que le nom de l'application installée_search_name est vide...

1voto

nohillside Points 82672

Si $1 est vide, le | /usr/bin/grep -i "$installed_app_to_search" n'est pas un élément essentiel et installed_app_search_name contient la liste complète des demandes retournées par mdfind .

Ou en d'autres termes : votre test est correct, mais la variable que vous testez n'a pas la valeur que vous attendez. Pour éviter cela, vous devez ajouter quelque chose comme [[ -z $1 ]] && return au début.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X