Com todo o respeito, não acho que o código / resposta acima esteja correto.
if [ -d dir] é provavelmente uma tentativa de if [[ -d "$dir" ]] .. ou [[ -d "$dir" ]];..
O código a seguir deve funcionar e fazer o que você quiser.
vhostdirs=( ./var/www/vhosts/* )
for dir in "$vhostdirs"
do
cp -r "folder_to_be_copied" "$dir/htdocs/"
done
Mente também as aspas " " em torno das variáveis que são essenciais para que os espaços em branco nos nomes dos diretórios sejam preservados.