Bash 对话框功能不显示

Bash dialog function not displaying

所以我想用一个函数显示我的对话框日历,使用临时文件方法但它不起作用,你能帮我吗?

#!/bin/bash
PROMPT=/tmp/prompt.sh.$$
DISPLAY=/tmp/output.sh.$$
trap "rm $DISPLAY; rm $PROMPT; exit" SIGHUP SIGINT SIGTERM

show_calendar()
{
    --clear --backtitle "backtitle" --title "title" --calendar 0 0 
    >$DISPLAY
    dialog <$DISPLAY
}
dialog --clear \
--backtitle "backtitle" \
--title "Menu:" \
--menu "Please choose" 15 50 2 \
Calendar "Show calendar" \
Exit "Exit from shell" 2>"${PROMPT}"

select=$(<"${PROMPT}")

case $select in
    Calendar) show_calendar;;
    Exit) break;;
esac

done

[ -f $DISPLAY ] && rm $DISPLAY
[ -f $PROMPT ] && rm $PROMPT 

谢谢

脚本将临时文件的名称存储在 'DISPLAY' 变量中。这是一个糟糕的选择,因为 DISPLAY 变量通常保存 X 显示的连接字符串。

将上述问题放在一边,代码尝试使用标准输入(对话框 < $DISPLAY)调用 'dialog' 程序。不幸的是,对话框只接受命令行参数。此外,'--calendar' 有 3 个参数。

考虑一下

# No temporary file
dialog --clear --backtitle "backtitle" --title "title" --calendar 0 0

或使用临时文件:

TEMP_CMD=/tmp/output.sh.$$
echo "" --clear --backtitle "backtitle" --title "title" --calendar 0 0 > $TEMP_CMD
dialog $(<$TEMP_CMD)