-d è un operatore per verificare se la directory data esiste o meno.
Ad esempio, ho un'unica directory chiamata /home/sureshkumar/test/.
La variabile directory contiene "/home/sureshkumar/test/"
if [ -d $directory ]
 Questa condizione è vera solo quando la directory esiste. Nel nostro esempio, la directory esiste quindi questa condizione è vera.
Sto cambiando la variabile della directory in "/home/a/b/".Questa directory non esiste.
if [ -d $directory ]
 
 Ora questa condizione è falsa. Se metto il ! davanti se la directory non esiste, la condizione if è vera. Se la directory esiste allora if [ ! -d $directory ] la condizione è falsa.
Il funzionamento del! operatore è se la condizione è vera, allora dice che la condizione è falsa. Se la condizione è falsa allora dice che la condizione è vera. Questo è il lavoro di ! operatore.
if [ ! -d $directory ]
 Questa condizione è vera solo se la $directory non esiste. Se la directory esiste, restituisce false.
 Le parentesi sono l'eseguibile del test, il punto esclamativo è una negazione e il -d opzione controlla se la variabile $directory è una directory.
Dal test uomo:
-d FILE
       FILE exists and is a directory
! EXPRESSION
       EXPRESSION is false
 
 Il risultato è un'istruzione if che dice "if $directory non è una directory"