gpt4 book ai didi

linux - 鞭尾鱼 : How to redirect output to environment variable?

转载 作者:IT王子 更新时间:2023-10-28 23:56:14 26 4
gpt4 key购买 nike

我正在尝试使用 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

它有效,我可以从头到尾使用同一个临时文件(脚本结束时将其删除)。但是,被迫为此使用磁盘而不是将其全部保存在内存中(重定向到环境变量)感觉很尴尬。

所以我想问:我是不是忘记了什么——或者我真的在使用 whiptail 时必须使用磁盘?

提前感谢您的反馈。

最佳答案

这可能是因为 whiptail 使用 stdin 和 stdout 来打印输入框,所以你不能将 stderr 直接重定向到 stdout,而是需要交换它们,例如:

foobar=$(whiptail --inputbox "Enter some text" 10 30 3>&1 1>&2 2>&3)

关于linux - 鞭尾鱼 : How to redirect output to environment variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com