Pode ser que o sudo /opt/lampp/lampp start
não seja colocado em segundo plano, portanto, seu script aguarde a interrupção antes de continuar.
Você tentou lançá-lo no plano de fundo? Você pode fazer isso adicionando um &
no final da linha:
#!/bin/bash
sudo /opt/lampp/lampp start &
cd /home/mohammed/Dropbox/htdocs/my-site
grunt watch