Bash 以数组作为列表的Cocoadialog下拉列表

Bash 以数组作为列表的Cocoadialog下拉列表,bash,Bash,为什么不包括foo元素 items=( "invisible below" foo "invisible above" "bar" "foo" not invisible ) # invisible: ^ CocoaDialog standard-dropdown --text "Choose:" --items "${items[@]}" --string-output --float --debug 问题在于CoLoadDialog将值列表加载到一个键和值相

为什么不包括foo元素

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

问题在于CoLoadDialog将值列表加载到一个键和值相同的数组中。它本质上将foo和“foo”视为同一项,第二项将覆盖第一项,就像PHP中的数组一样

因此,如果将数组更改为:

items=( "invisible below" foo1 "invisible above" "bar" "foo" not invisible ) 项目=(“foo1”下方不可见“bar”上方不可见“foo”不可见) 您将看到foo1出现:

我们之所以知道它是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 $items=(“foo”下方不可见“bar”上方不可见“foo”不可见) $printf“%s\n”${items[@]} 下面看不见 福 在上面看不见 酒吧 福 不 看不见的
因此,您传递的数组很好-CocoaDialog只是用第二个值覆盖第一个值。

这实际上是一个很好的特性:p非常感谢!事实上,我在寻找一种在多选列表中列出多个项目的方法时发现了您的问题。但是我认为CocoaDialog没有这个功能——至少我不知道。如果你不想复制同一个项目的多个副本,你能不能在名称上多加一个空格?是的,你可以。我还给CocoaDialog的作者发了电子邮件,他说他可能会添加我正在寻找的多选功能