如何在whiptail文本框显示命令输出?现有方法失效求替代方案
问题
whiptail命令有--textbox选项,可在对话框中显示文本文件内容。我想用命令输出来替代文本文件内容,尝试运行命令whiptail --textbox /dev/stdin 30 60 <<< "$(echo Hello)"后得到空文本框,请问还有哪些方法可将命令输出当作文件处理?
解决方法
管道直接传递输出
用管道把命令输出直接导入whiptail的标准输入,这是最简洁的方式:echo "Hello" | whiptail --textbox /dev/stdin 30 60管道会持续向/dev/stdin输送数据,whiptail能正确读取完整内容。
进程替换
bash、zsh等shell支持进程替换,可将命令输出模拟为临时文件,语法为<(命令):whiptail --textbox <(echo "Hello") 30 60系统会生成一个伪文件描述符,whiptail读取该"文件"等价于读取命令输出。
临时文件中转
兼容性最强的方案,先将命令输出写入临时文件,再让whiptail读取:temp_file=$(mktemp) echo "Hello" > "$temp_file" whiptail --textbox "$temp_file" 30 60 rm "$temp_file"这种方式适用于所有支持whiptail的环境,注意用完后清理临时文件。
内容的提问来源于stack exchange,提问作者user19897594
相关产品推荐
相关产品推荐

