如何 return bash 函数中对话问题的结果

How to return the result of a dialog question in a bash function

我试图 return dialog 命令提出的问题的结果。 但是当我尝试这样做时,它冻结了,当我按下箭头或输入时,它清除了屏幕,我只看到 : numerical argument nessecary。我认为这是 return 抛出的错误,但我不知道为什么? 这不是 Dialog 的错误,因为相同的命令没有 return 工作。

function BUL_askYesNo()
{
        return $(dialog --yesno "" 0 0)
}

我试过 KDialog,它可以工作,所以我不知道 Dialog 有什么问题...

当您 运行 dialog 命令替换 $() 时,stdout 不再是终端。

您需要将其传递给 dialog :

#!/usr/bin/env bash
function BUL_askYesNo()
{   
    exec 3>&1
    return $(dialog --yesno "" 0 0 2>&1 1>&3)
}
BUL_askYesNo Hello

但是return还是不行。我认为这要简单得多:

#!/usr/bin/env bash
function BUL_askYesNo()
{   
    dialog --yesno "" 0 0
}
BUL_askYesNo Hello