大夏shell编程学习笔记(3)

本文将和大家一起学习集中可以增加交互式脚本活力的方法,使得shell脚本看上去不是那么单调乏味,使其看上去更符合潮流。

创建文本菜单

①创建菜单脚本的小技巧
要在echo命令中包含字符(例如制表符和换行符),必须使用-e选项。
echo -en将显示该行,而不再行为添加换行符。
在read命令中使用-n选项仅获取一个字符,这样允许用户输入一个数字而不必再按回车。

②简单的例子
一下例子实现了一个简单的获取linux系统管理信息。

funcation diskpace {
    clear
    df -k
}
funcation whoseon{
    clear
    who
}
funcation memusage{
    clear
    cat /proc/meninfo
}
funcation menu {
   clear
   echo
   echo -e "\t\t\tSys Admin Menu\n"
   echo -e "\t1. Display disk space"
   echo -e "\t2. Display logged on users"
   echo -e "\t3. Display memory usage"
   echo -e "\t0. Exit program\n\n"
   echo -en "\t\tEnter option:"
   read -n 1 option
}
while [ 1 ]
do
  menu
  case $option in
  0)
   break;;
  1)
   diskspace;;
  2)
   whoseon;;
  3)
   memusage;;
  *)
   clear
   echo "Error!!"
  esac
  echo -en "\n\n\t\t\tHit any key to continue"
  read -n 1 line
 done
 clear

③使用select命令
在shell中我们可以使用select命令,来更便利的创建菜单选项,其语法规则如下:

select variable in list
do
  commands
done

参数列表使用空格隔开的构建菜单的文本项列表,然后选择一个特殊提示符,由PS3环境变量定义。
我们将上面那个例子使用select进行改写:

funcation diskpace {
    clear
    df -k
}
funcation whoseon{
    clear
    who
}
funcation memusage{
    clear
    cat /proc/meninfo
}
PS3="Enter option: "
select option in "Display disk space" "Display logged on users" "Display memory usage" "Enter option" 
do
  case $option in
   "Enter option")
       break;;
   "Display disk space")
       diskspace;;
   "Display logged on users")
       whoseon;;
   "Display memory usage")
       memusage;;
    *)
       clear
       echo "Error!!"
   esac    
done
clear

使用select命令时,要记住:存储在变量中的结果值是整个文本字符串,而不是与该菜单项关联的数字。文本字符串才是case语句中比较的内容。

添加颜色

①ANSI转义码
要控制显示格式,必须使用选择图形再现转义码。SGE转义码的格式为:

CSIn[;k]m

效果控制代码从0~8
颜色控制代码从0~7,其中设置前景颜色使用3开头的一个两位数,第二位为所需要的颜色代码,设置背景颜色使用4开头的两位数,同样第二位数字表示具体颜色。

代码描述代码描述
0黑色4蓝色
1红色5洋红色
2绿色6青色
3黄色7白色

②显示ANSI转义码
使用Ctrl-v组合件,后跟Esc建,字符^[出现。
例如:

$ echo ^[[41mThis is a test^[[00m     #输出后恢复原来的颜色方案
$ echo "^[[33;41mThis is a test^[[00m"     #使用两个转移控制时,用双引号引起来

制作窗口

①初识dialog
使用dialog软件包可以很方便地将对话框合并到shell脚本中来与脚本用户进行交互。
命令格式:

dialog --widget parameters

其中widget为下表的小部件名称,parameters为定义的窗口不见大小。

小部件描述
calendar日历
inputbox文本输入框
menu显示一系列可供选择的选项
msgbox显示消息
texbox在滚动的窗口中显示文件中的文本
yesno提供一个含有Yes/No按钮的简单消息

小提示:可以使用--title "标题内容" 来显示小窗口的标题信息
举个例子:

dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display users" 0 "Exit" 2>$test

关于dialog的用法各种资料中写的十分详细,在这里只是做一个简单的认识,就不再赘述了。

②在脚本中使用dialog命令
需要遵循两点:
★如果Cancel或者No按钮可用,请检查dialog命令的退出状态。
★重定向STDERR以获取输出值。

③获取图形

我们还可以使用kdialog和zenity软件包,它们分别为KDE和GNOME桌面提供图形化的窗口小部件。其操作与dialog有部分类似,在这就不再赘述,特别注意的是kdialog和zenity将标签值发送到STDOUT中,而dialog将标签值发送到STDERR中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值