2010-11-15 58 views
1

問題是我無法找到正確填充boxes數組的方法。下面的代碼:無法用簡單的ls輸出填充zsh自動完成

local expl 
declare -a boxes 
boxes = $(ls $HOME/.vagrant/boxes --color=none) 
_wanted boxes expl 'help' compadd $boxes 

拋出一個異常:

vagrant help __box_list:13: command not found: boxes 
__box_list:13: command not found: boxes 
__box_list:13: command not found: boxes 

ls命令工作正常,如果手動嘗試:

ls $HOME/.vagrant/boxes --color=none 
lucid32 lucid64 

哪裏是我的錯?

回答

1

zsh似乎不喜歡=周圍的空間。

boxes=$(ls $HOME/.vagrant/boxes --color=none)作品,可能讓我們更進一步。

1

這正是解決了這個問題:

_wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g') 
0

什麼你要找的是

boxes=($HOME/.vagrant/boxes/*(N:t)) 
  • Don't parse the output of ls.
  • 在shell語法,你不能有周圍的空間=在作業中。
  • boxes=(…)創建一個數組。
  • (N:t)僅保留與模式匹配的文件的基本名稱。括號引入glob qualifiersN表示如果沒有文件匹配,展開將爲空,:表示下一個字符爲history modifier