加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – whiptail:如何将输出重定向到环境变量?

发布时间:2020-12-13 19:33:24 所属栏目:Linux 来源:网络整理
导读:我试图使用 whiptail,因为它是 dialog的轻量级替代品,并且似乎在大多数系统中默认安装(即,如果“忘记”或默认情况下不安装,则不需要安装) ). 我在这里检查了 question #1562666的几个示例,但是我正在寻找重定向输出的替代方法,以便设置一个环境变量,而不是写
我试图使用 whiptail,因为它是 dialog的轻量级替代品,并且似乎在大多数系统中默认安装(即,如果“忘记”或默认情况下不安装,则不需要安装) ).
我在这里检查了 question #1562666的几个示例,但是我正在寻找重定向输出的替代方法,以便设置一个环境变量,而不是写入磁盘.

例如,当我尝试使用对话框时,这将工作(我看到对话框,并设置了一个环境变量):

result=$(dialog --output-fd 1 --inputbox "Enter some text" 10 30)
echo Result=$result

但是,当使用whiptail代替对话框时,此操作不起作用,因为对话框从不显示.我必须将其重定向到磁盘文件并读取,例如:

result=$(tempfile) ; chmod go-rw $result
whiptail --inputbox "Enter some text" 10 30 2>$result
echo Result=$(cat $result)
rm $result

它工作,我可以使用相同的tempfile从头到尾(删除它,当脚本结束).但是,强制使用磁盘感到尴尬,而不是将其全部保留在内存中(重定向到环境变量).

所以我问:我忘记了某些东西,还是在使用whiptail时真的要使用磁盘?

提前感谢您的反馈.

解决方法

这可能是因为whiptail使用stdin和stdout来打印输入框,因此您不能将stderr直接重定向到stdout,但是您需要将其交换,例如:
foobar=$(whiptail --inputbox "Enter some text" 10 30 3>&1 1>&2 2>&3)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读