Scale计算公式 - 关于电压值与二进制数值间的转换
2008-10-31 11:57
435 查看
dialog:能够动态生成一个文本窗口,并且这个窗口支持众多的窗口元素。
dialog: 命令
窗口元素:
文本框
单选框
复选框
进度条
dialog所能够提供给我们的窗体,选择完成以后(敲了回车之后),其相关信息没有输出到标准输出,而是输出到错误输出
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/ce9dad39781137e8bd6ab60b5cd52632.jpg)
在是选项按下回车后
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/4e52334f89fd2e71ad06a469783951c2.jpg)
还没有按回车
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2b41ef10826960de7ac88d7f6ae9ebab.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/3a33e9fe61194abeb0b8b6346816975d.jpg)
这次就不在后面显示了
如何在脚本中使用dialog
例:创建用户
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/3702beae635b5b80620675410f6c4655.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/baf40a33a5a44f281ca5d9322bf59115.jpg)
为了不让其显示这些信息,而且如果用户存在,怎么办?用户存在了,你一上来就创建用户也不行
# vim adduser.sh
if [ $RETVAL -eq 0 -a -n "$Username" ] && ! id $Username &> /dev/null; then
# bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/d920a567455480882fe24e883b86afca.jpg)
没有任何信息返回,应该是成功了。但是这样也不知道是创建成功还是由于用户以存在而没有创建成功,则再改一下
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/a4a331ff88c4df4d00cf1b2fc59010b8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/1c4b85160f973adaf74136451b2c667b.jpg)
现在来实现输入账号、密码
# vim adduser.sh
#!/bin/bash
#
Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`
RETVAL=$?
if [ $RETVAL -eq 0 -a -n "$Username" ]; then #判定$?,如果其值等于0,且用户名不为空,且当前主机上不存在这个用户
if ! id $Username &> /dev/null; then
useradd $Username
Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --passwordbox "Please enter the password: " 10 30`
echo $Pass | passwd --stdin $Username &> /dev/null
dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30
else
dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30
fi
fi
# bash -n adduser.sh
# bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2e3447f05092c06b20451da0dd84dae6.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/0887121493db865ba923cbe7741df3a0.jpg)
输入密码时,没有显示任何信息
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/cda5c1372224e82c7d9af6a09008c6df.jpg)
如果想让用户在输入密码时显示*号
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/825a6e45e3fe0f1d655e977717371325.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/e09ab940d91abfe34d469e80ed68d94a.jpg)
现在显示*号了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/85d959bb554dd2e52118f60e51be3841.jpg)
如果用户没有给密码怎么办
# vim adduser.sh
# dialog --title "Cal" --calendar "Canlendar" 6 45 8 4 2015
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/c37e4523fbcc7cceccf2083efdcfb9e3.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/abc8b0f9a1d24f3e0573ab148770edc9.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/c41502a6a095247d9ac280fe0120b6a7.jpg)
会显示
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/4f44fc3a2edbae83f17bb8e6a532a3a7.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/bbf02b26f5620c9422e78b76b3549106.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2c29f18048039a92192170b030e975db.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/b5f193dc1339a7392976969261e063a8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/7171f208919f62fcf7b2069b67eda6f9.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/ae5c159fc0b12ca0977abe2637fdc286.jpg)
本文出自 “三哥” 博客,请务必保留此出处http://523958392.blog.51cto.com/9871195/1631380
dialog: 命令
窗口元素:
文本框
单选框
复选框
进度条
dialog所能够提供给我们的窗体,选择完成以后(敲了回车之后),其相关信息没有输出到标准输出,而是输出到错误输出
# yum -y install dialog # dialog --print-maxsize #这个只是自己的值,换个人大小可能就不一样了,所以以后设置的时候尽可能不要把窗口设置的过大 MaxSize: 35, 134 # dialog --backtitle "First Window" --title "Create User" --yesno "HostName." 10 30
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/ce9dad39781137e8bd6ab60b5cd52632.jpg)
在是选项按下回车后
# echo $? 0如果在否选项按下回车后
# echo $? 1 # dialog --backtitle "First Window" --title "Create User" --inputbox "HostName." 10 30 #加上--inputbox选项后,就可以输入信息了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/4e52334f89fd2e71ad06a469783951c2.jpg)
还没有按回车
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2b41ef10826960de7ac88d7f6ae9ebab.jpg)
# Hostname=`dialog --stdout --backtitle "First Window" --title "Create User" --inputbox "Hostname." 10 30`
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/3a33e9fe61194abeb0b8b6346816975d.jpg)
这次就不在后面显示了
# echo $Hostname hostname注:先把所有的输出定向到标准输出(--stdout)上来,再使用一个变量获取命令的执行结果。既然这样,我们就能够在脚本中调用了
如何在脚本中使用dialog
例:创建用户
# vim adduser.sh #!/bin/bash # Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30` RETVAL=$? if [ $RETVAL -eq 0 -a -n $Username ]; then #判定$?,如果其值等于0,且用户名不为空 useradd $Username echo $Username | passwd --stdin $Username fi # bash -n adduser.sh # bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/3702beae635b5b80620675410f6c4655.jpg)
# vim adduser.sh if [ $RETVAL -eq 0 -a -n "$Username" ]; then #把$Username用引号引起来
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/baf40a33a5a44f281ca5d9322bf59115.jpg)
为了不让其显示这些信息,而且如果用户存在,怎么办?用户存在了,你一上来就创建用户也不行
# vim adduser.sh
if [ $RETVAL -eq 0 -a -n "$Username" ] && ! id $Username &> /dev/null; then
# bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/d920a567455480882fe24e883b86afca.jpg)
没有任何信息返回,应该是成功了。但是这样也不知道是创建成功还是由于用户以存在而没有创建成功,则再改一下
# vim adduser.sh #!/bin/bash # Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30` RETVAL=$? if [ $RETVAL -eq 0 -a -n "$Username" ]; then if ! id $Username &> /dev/null; then useradd $Username echo $Username | passwd --stdin $Username &> /dev/null dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30 else dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30 fi fi # bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/a4a331ff88c4df4d00cf1b2fc59010b8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/1c4b85160f973adaf74136451b2c667b.jpg)
现在来实现输入账号、密码
# vim adduser.sh
#!/bin/bash
#
Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`
RETVAL=$?
if [ $RETVAL -eq 0 -a -n "$Username" ]; then #判定$?,如果其值等于0,且用户名不为空,且当前主机上不存在这个用户
if ! id $Username &> /dev/null; then
useradd $Username
Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --passwordbox "Please enter the password: " 10 30`
echo $Pass | passwd --stdin $Username &> /dev/null
dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30
else
dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30
fi
fi
# bash -n adduser.sh
# bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2e3447f05092c06b20451da0dd84dae6.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/0887121493db865ba923cbe7741df3a0.jpg)
输入密码时,没有显示任何信息
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/cda5c1372224e82c7d9af6a09008c6df.jpg)
如果想让用户在输入密码时显示*号
# vim adduser.sh Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --insecure --passwordbox "Please enter the password: " 10 30` #加入了--insecure选项 # bash adduser.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/825a6e45e3fe0f1d655e977717371325.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/e09ab940d91abfe34d469e80ed68d94a.jpg)
现在显示*号了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/85d959bb554dd2e52118f60e51be3841.jpg)
如果用户没有给密码怎么办
# vim adduser.sh
# dialog --title "Cal" --calendar "Canlendar" 6 45 8 4 2015
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/c37e4523fbcc7cceccf2083efdcfb9e3.jpg)
# dialog --title "Checklist" --checklist "Yourself" 10 30 2 h hight no w width yes
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/abc8b0f9a1d24f3e0573ab148770edc9.jpg)
# vim backup.sh #!/bin/bash # Dir=('/etc/httpd' '/etc/pam.d' '/etc/vsftpd') Source=`dialog --stdout --title "Backup" --checklist "Choose the dir you want to backup: " 10 50 3 0 /etc/httpd 0 1 /etc/pam.d 1 2 /etc/vsftpd 0` echo $Source Source=`echo $Source | tr -d '"'` for I in $Source; do echo ${Dir[$I]} done # bash backup.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/c41502a6a095247d9ac280fe0120b6a7.jpg)
会显示
"0" "2" /etc/httpd /etc/vsftpd # vim showusage.sh #!/bin/bash # ShowItem=`dialog --stdout --title "Show Usages" --menu "Choose the Usage you want: " 12 35 6 1 "Show disk usages" 2 "Show physical memory usages" 3 "Show swap usages" 4 "quit"` case $ShowItem in "1") df -lh;; "2") free -m | grep "^Me";; "3") free -m | grep "^Sw";; "4") exit;; esac # bash showusage.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/4f44fc3a2edbae83f17bb8e6a532a3a7.jpg)
Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 23G 24G 50% / tmpfs 1.9G 21M 1.9G 2% /dev/shm /dev/sda1 190M 51M 129M 29% /boot /dev/mapper/myvg-mydata 9.8G 54M 9.2G 1% /mydata # bash showusage.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/bbf02b26f5620c9422e78b76b3549106.jpg)
Mem: 3776 2483 1292 144 661 575 # bash showusage.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/2c29f18048039a92192170b030e975db.jpg)
Swap: 9999 182 9817 # vim gauge.sh #!/bin/bash # (for Percent in {1..100};do echo "XXX" echo "Percent: ${Percent}%" echo "XXX" echo $Percent sleep 0.2 done) | dialog --clear --gauge "Gauge" 8 60 0 # bash gauge.sh
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/b5f193dc1339a7392976969261e063a8.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/7171f208919f62fcf7b2069b67eda6f9.jpg)
# dialog --title "Add a user" --form "please input the infomation of new user:" 12 40 4 \ > "Username: " 1 1 "" 1 15 15 0 \ > "Full name: " 2 1 "" 2 15 15 0 \ > "Home Dir: " 3 1 "" 3 15 15 0 \ > "Shell: " 4 1 "" 4 15 15 0
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/02/ae5c159fc0b12ca0977abe2637fdc286.jpg)
本文出自 “三哥” 博客,请务必保留此出处http://523958392.blog.51cto.com/9871195/1631380
相关文章推荐
- 关于二进制、八进制、十六进制的计算和转换(Binary-Octal-Hex)
- byte、二进制、十进制数值之间的转换
- 关于采购中的PTA——概念如何理解及其计算公式
- Java:如何快速计算出某个数转换为二进制后1的个数
- C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果
- 关于错误:不能将licenses.licx文件转换成二进制,error lc0003 !
- C# 字符串转换为计算公式
- 关于”栈“的应用:数值转换
- C/C++ 关于float和double类型与二进制的转换实现。。
- 关于Tostring转换格式过程中的数值格式问题
- [原创] 计算字符串公式得出数值.(CalculateExpression)
- 关于EXCEL中公式复制后不自动计算的问题!
- 如何用C语言实现十进制到二进制的转换并计算二进制中1的个数
- 关于SQL Server中将数值类型转换为字符串的问题(转)
- 位移运算符无需转换二进制计算
- 关于float,double等表示的数值范围的计算
- reverse_bits(二进制的数值转换)
- 关于SQL Server中将数值类型转换为字符串的问题
- javaweb中关于金额数值的计算
- Java中不同数值类型间转换与计算精度丢失问题