首页 > 解决方案 > 如何在 Bash 中将带有空格的数组作为函数参数传递

问题描述

我有以下脚本:

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[@]}

当我执行它时,我注意到它正在分解一些事情,gnuplot --with-qt例如我看到它尝试执行:brew install --with-qt

我究竟做错了什么??

标签: bashshellunixsh

解决方案


推荐阅读