Bash 以数组作为列表的Cocoadialog下拉列表
为什么不包括foo元素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将值列表加载到一个键和值相
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的作者发了电子邮件,他说他可能会添加我正在寻找的多选功能