1 votes

Problème avec la syntaxe de suppression de compte par script

Je travaille sur un module de nettoyage de comptes script qui peut gérer les comptes cachés et non cachés que nous créons en masse sur les nouveaux systèmes MacOS.

Pour commencer, nous avons simplifié la logique.

Cependant, je continue à obtenir une erreur : line 4 : [ : missing `]'

J'ai l'espace... que me manque-t-il ? J'ai essayé de vérifier la syntaxe et ça passe.

#!/bin/bash
USERNAME=administrator

if [ dscl . -list /Users | grep -v '^_' | grep $USERNAME ];
    then
    echo "Deleting user account $USERNAME"
    dscl . -delete "/Users/$USERNAME"
else
    echo "The admin account $USERNAME does not exist here"
fi

if [ -d "/$USERPATH/$USERNAME" ];
    then
    echo "Deleting leftover user account folder $USERPATH/$USERNAME"
    rm -rf $USERPATH/$USERNAME
fi

if [ -d "/Users/$USERNAME" ];
    then
    echo "Deleting leftover user account folder /Users/$USERNAME"
    rm -rf /Users/$USERNAME]
fi

0voto

Nikita Points 476

[ (et [[ ) attend une expression, pas une commande ; vous ne pouvez donc pas exécuter directement des commandes à l'intérieur d'un test.

Lorsque vous placez un tuyau dans votre condition, cela met fin à l'évaluation commencée avec [ qui rend ] à traiter comme un argument pour le dernier grep .

Essayez de mettre votre condition à l'intérieur $() comme suit :

if [ $(dscl . -list /Users | grep -v '^_' | grep $USERNAME) ];

De cette façon, l'expression (y compris tous les tuyaux) sera exécutée en premier et renverra son code de sortie à utiliser dans votre évaluation.

0voto

Michael Zhou Points 167

Dans votre instruction pipée, seul le statut de sortie du dernier grep est utilisé et vous n'avez pas besoin des crochets de test. Vous pouvez également éliminer le premier grep.

if dscl . -list  /Users | grep -w "$username"
then
    .........
    .........
else
    .........
fi

Veuillez faire un essai avant de l'utiliser.

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