2011-08-02 39 views
1

爲什麼不包括foo元素?Cocoadialog下拉列表與陣列

items=( "invisible below" foo "invisible above" "bar" "foo" not invisible) 
# invisible:    ^
CocoaDialog standard-dropdown --text "Choose:" --items "${items[@]}" --string-output --float --debug 

回答

3

問題是CocoaDialog將值列表加載到一個數組中,其中的鍵和值是相同的。它基本上將foo和「foo」視爲同一項目,第二個將覆蓋第一個 - 就像PHP中的數組一樣。

所以,如果你改變你的數組這樣的:

 
items=( "invisible below" foo1 "invisible above" "bar" "foo" not invisible) 

你會看到,foo1顯示出來:

image http://img269.imageshack.us/img269/6738/screenshot20110818at223.png

我們知道這是CocoaDialog而不是bash的原因是我們可以打印出一系列物品:

 
$ items=( "invisible below" foo "invisible above" "bar" "foo" not invisible) 

$ printf "%s\n" "${items[@]}" 
invisible below 
foo 
invisible above 
bar 
foo 
not 
invisible 

因此,你傳遞的數組很好 - CocoaDialog只是用第二個值覆蓋第一個值。

+0

這實際上是一個相當不錯的功能:P非常感謝你 – Tyilo

+0

是的!當我正在尋找一種方法在多重選擇中列出多個項目時,我確實發現了您的問題。但我不認爲CocoaDialog有這個功能 - 至少不是我所知道的。 – cwd

+0

如果你不想同一個項目的許多副本,難道你不能只爲名稱添加額外的空間? – Tyilo