You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Bash数组自动生成dialog菜单所需的索引值对字符串

实现方案

方案说明

我们通过构造独立的参数数组来生成dialog所需的索引值对,完全兼容带空格、特殊字符的数组元素,不会出现转义错误。

完整代码示例

# 1. 定义原始数组
declare -r -a arr=(
  piano
  table
  chair
  "带空格的示例项"
)

# 2. 生成dialog菜单所需的索引值对参数数组
declare -a menu_params=()
for index in "${!arr[@]}"; do
  # dialog菜单序号从1开始,所以把数组的0起始索引加1
  display_idx=$((index + 1))
  menu_params+=("$display_idx" "${arr[$index]}")
done

# 3. 调用dialog,直接传入生成好的参数数组
dialog_height=15
dialog_width=40

dialog \
--backtitle "Launcher" \
--title "App" \
--ok-label 'Select' \
--cancel-label "Back" \
--menu "Select an application" \
"$dialog_height" "$dialog_width" 4 \
"${menu_params[@]}"

单独输出索引值对字符串的方法

如果你需要单独导出题目要求格式的文本,可以使用以下代码:

for index in "${!arr[@]}"; do
  display_idx=$((index + 1))
  # 不需要最后一行末尾反斜杠可加判断:最后一个元素不输出反斜杠即可
  printf '"%d" "%s" \\\n' "$display_idx" "${arr[$index]}"
done

输出结果示例:

"1" "piano" \
"2" "table" \
"3" "chair" \
"4" "带空格的示例项" \

内容的提问来源于stack exchange,提问作者user5507535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:06:02