使用Linux Dialogs收集输入

时间:2015-10-21 16:21:21

标签: linux dialog redhat centos5

我发现了Dialogs,所以我今天要更新菜单。到目前为止,非常好。

我来到了需要收集用户输入的地方。

我有

dialog --title " INPUT FILE NAME: " --inputbox "$(ls)" 30 40 2> answer

这会将用户输入发送到名为" answer"

的文件

我试过了

dialog --title " INPUT FILE NAME: " --inputbox "$(ls)" 30 40 2> $answer

但似乎什么也没做。

我试过

answer=$(dialog --title " INPUT FILE NAME: " --inputbox "$(ls)" 30 40 2) 

但有一些错误。

2 个答案:

答案 0 :(得分:1)

manual page(对话框)讲述了这个故事:

  

某些小部件(例如核对清单)会将文本写入对话框的输出。   通常这是标准错误,但有更改选项   这:“ --output-fd ”,“ --stderr ”和“ --stdout ”。如果没有写入文字   按下取消按钮(或ESC); 对话框会立即退出。

原因对话框默认使用标准错误输出的是它使用curses / ncurses库,它通常将输出(用于屏幕更新)打印到标准输出。要更改对话框的行为(并写入标准输出),请使用“ --stdout ”选项。

有趣的是(虽然它可能看起来是一个明显的问题需要解决,因为它使脚本复杂化),Xdialog程序首先实现了这个选项;添加到对话框似乎是 Good Thing (参见changelog)。

答案 1 :(得分:0)

完成

dialog --title " INPUT FILE NAME: " --inputbox "$(ls )" 30 40 2>answer
ans=$(cat answer)
rm answer