Comment passer des tableaux avec des espaces en tant qu’arguments de la fonction Bash

J’ai le script suivant:

brews=( java8 archey aws-shell "bash-snippets --without-all-tools --with-weather" cheat coreutils dfc findutils "fontconfig --universal" fpp fzf git bash-completion git-extras git-fresh git-lfs "gnuplot --with-qt" ) casks=( adobe-acrobat-reader airdroid android-platform-tools awscli cakebrew cleanmymac commander-one docker dropbox firefox geekbench google-backup-and-sync google-chrome github handbrake hyper ) function install { cmd=$1 shift for pkg in "$@"; do exec="$cmd $pkg" if ${exec} ; then echo "Installed $pkg" else echo "Failed to execute: $exec" fi done } install 'brew install' ${brews[@]} install 'brew cask install' ${casks[@]} 

Quand je l’exécute, je remarque qu’il divise des choses comme gnuplot --with-qt par exemple, je vois qu’il essaie de s’exécuter: brew install --with-qt

Qu’est-ce que je fais mal??