如何链式调用Dialog组件并实现组件间数据传递?
实现Dialog菜单选择+确认的交互流程
我需要构建一个Dialog交互流程:先让用户通过menu组件选择选项,再用yesno组件确认选择——因为后续要执行磁盘格式化操作,单独的确认步骤必不可少。
最初尝试用文件描述符传递菜单选择结果给yesno组件,但由于变量提前展开导致失败,而且还需要把菜单返回的数字编号转换成对应的文本标签来构建确认提示。以下是最初的尝试脚本:
#!/bin/bash exec 3<> /tmp/fubar confirm=$(cat /dev/fd/3 &) res=$(dialog --clear \ --output-fd 3 \ --backtitle "Backtitle" \ --title "Title" \ --menu "Please select:" 15 30 4 \ "1" "Foo" \ "2" "Bar" \ --clear \ --stderr \ --yesno "$confirm" 15 30 \ 2>&1 >/dev/tty)
后来参考方案做了修改,改用变量存储选择结果并转换标签,成功实现需求,脚本如下:
#!/bin/bash choice=$(dialog --clear \ --backtitle "Backtitle" \ --title "Title" \ --menu "Please select:" 15 30 4 \ "1" "Foo" \ "2" "Bar" \ 2>&1 >/dev/tty) case $choice in 1) label="foo" ;; 2) label="bar" ;; *) echo >&2 "ERR $choice"; exit 1 ;; esac dialog --clear \ --backtitle "Backtitle" \ --title "Confirm" \ --yesno "You selected option $label. Do you want to proceed?" 10 40
内容的提问来源于stack exchange,提问作者QF0
相关产品推荐
相关产品推荐

