linux:dialog表单提交示例

dialog是个linux命令行的ui显示工具,可以在命令行显示更加友好的用户界面,系统如果没有安装需要手工安装:

sudo apt-get install dialog

以下是在命令显示表单的示例:

#!/bin/bash
# 表单各字段的默认值
shell="bash"
groups="1"
user="hello"
home="/home/hello"

# Store data to $VALUES variable
VALUES=$(dialog --ok-label "Submit" \
	--backtitle "Linux User Managment" \
	--title "Useradd" \
	--form "Create a new user" 15 50 0 \
        "Username:" 1 1	"$user" 	1 10 10 0 \
        "Shell:"    2 1	"$shell"  	2 10 15 0 \
        "Group:"    3 1	"$groups"  	3 10  8 0 \
        "HOME:"     4 1	"$home" 	4 10 40 0 \
3>&1 1>&2 2>&3)

# 显示输入的字段值,如果没改变则输出默认值
echo "$VALUES"

看看执行效果吧:
在这里插入图片描述

上面的示例将对话框中输入值以字符串形式存储到VALUES变量中,如果其中某个字段为空,可就无法区分了。如何解决这个问题呢?
其实上面的例子dialog中所有的表单输出都重定义到了3这个句柄中,可以使用sed命令顺序读取dialog的输出,示例如下:

#!/bin/bash
# 数据库连接参数默认值
database_jdbc_host=localhost
database_jdbc_port=3306
database_jdbc_username=root
database_jdbc_password=
database_jdbc_schema=test
# Store data to $values variable
values=$(dialog --cancel-label "返回" \
    --backtitle "$DEFAULT_BACK_TITLE" \
    --title "数据库连接参数" \
    --form "请输入数据连接的参数:" 15 60 0 \
        "主机名(host):"     1 1	    "$database_jdbc_host" 	    1 20 30 0 \
        "端口号(port):"     2 1     "$database_jdbc_port"  	    2 20 30 0 \
        "用户名(user):"     3 1	    "$database_jdbc_username"  	3 20 30 0 \
        "密码(password):"   4 1	    "$database_jdbc_password" 	4 20 30 0 \
        "数据库名(schema):"  5 1    "$database_jdbc_schema" 	5 20 30 0 \
        3>&1 1>&2 2>&3)
database_jdbc_host=$(echo "$values" | sed -n 1p)
database_jdbc_port=$(echo "$values" | sed -n 2p)
database_jdbc_username=$(echo "$values" | sed -n 3p)
database_jdbc_password=$(echo "$v" | sed -n 4p)
database_jdbc_schema=$(echo "$values" | sed -n 5p)

echo database_jdbc_host=$database_jdbc_host    
echo database_jdbc_port=$database_jdbc_port
echo database_jdbc_username=$database_jdbc_username
echo database_jdbc_password=$database_jdbc_password
echo database_jdbc_schema=$database_jdbc_schema

参考资料:

https://stackoverflow.com/questions/30245008/bash-shell-scripting-dialog-form-variables

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值