Можно добавить проверок на наличие уже такого домена (самого конфига или папки), и не совсем понятно зачем "touch /etc/apache2/sites-available/$domain", у touch слегка иное предназначение, echo сам создаст файл при его отсутствии
Для выполнения действия необходимо авторизоваться!