如何使用dialog --checklist命令展示文本文件的全部内容
实现方法
dialog 的--checklist参数要求传入的条目格式为[标签 展示文本 默认选中状态],你可以通过读取文本文件逐行构造参数来实现需求,以下是两种常用实现方案:
方案1:bash脚本实现(兼容含特殊字符的行内容)
假设你的文本文件命名为data.txt,创建以下脚本运行即可:
#!/bin/bash # 存储checklist条目的数组 checklist_items=() count=1 # 逐行读取文件内容 while IFS= read -r line_content; do # 跳过空行 [[ -z "$line_content" ]] && continue # 追加条目:序号 行内容 默认未选中(off) checklist_items+=("$count" "$line_content" "off") ((count++)) done < "data.txt" # 调用dialog展示checklist,选中结果会写入selected.txt文件 dialog --checklist "可选内容列表" 20 70 15 "${checklist_items[@]}" 2> selected.txt
运行后dialog界面就会按你期望的格式展示所有行,每一行前默认显示未选中的[ ]标识。
方案2:一行命令快速实现(适合行内容无特殊字符的场景)
dialog --checklist "可选内容列表" 20 70 15 $(awk 'NF{print NR,$0,"off"}' data.txt) 2> selected.txt
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

