Bash对话框功能未显示



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

#!/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显示器的连接字符串。

为了解决上述问题,代码尝试使用标准输入(dialog<$DISPLAY(调用"dialog"程序。不幸的是,对话框只接受命令行参数。此外,"--日历"包含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)

最新更新