Parece funcionar corretamente. Se eu tentar isso:
string="/opt/directory/"
if [[ $string != *"directory"* ]]; then
echo "true"
else
echo "false"
fi
Em seguida, ele informa corretamente false . Em outras palavras, a pergunta " faz $string não conter *"directory"* " é falso , pois $string contém *"directory"* .
Talvez você quisesse perguntar " faz $string conter *"directory"* ", caso em que você precisa usar:
if [[ $string == *"directory"* ]]
(observe o uso de == em vez de != .)