`
qindongliang1922
  • 浏览: 2183654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117522
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125920
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59891
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71297
社区版块
存档分类
最新评论

跟散仙学shell编程(八)

阅读更多
上篇散仙说了linux里面函数的使用,本篇我们来看下如何在shell编写一些简单的shell交互编程,看下散仙写的一个小shell的demo类似JAVA控制台下的编程:

[search@h1 818]$ cat menu.sh 



function wec {  echo "welcomeaaa";  }

function dis {   clear ; df -h ;  }

function whos { clear ; who ;   }

function frees { clear ; free -m ;    }

function menu {


echo   ""

echo -e "\t1:系统管理员\n"
echo -e "\t2:显示磁盘空间\n"
echo -e "\t3:显示登录用户\n"
echo -e "\t4:显示内存使用\n"
echo -e "\t0:退出\n"
echo -en "\t\t选择类型: "

read -n  1 option

}



#调用系统餐单
while [ 1 ]
do
menu
case $option in

0)  break  ;; 
1)  echo "a";  wec   ;;
2)  echo "显示磁盘空间" ; dis  ;;
3)  echo "显示登录用户" ; whos  ;;
4)  echo "显示内存使用" ; frees ;;
*)  echo "错误的选择" ;;
esac

#echo   "any key to continue(n/y) : " ;
read -p  "是否要继续(n/y):"   line ;
#echo  "行:  $line";


if [ $line = "n"  ]
 then
   echo "谢谢使用!";
   break;
else
  echo "else: $line";

fi


done


测试效果:
[search@h1 818]$ sh menu.sh 

        1:系统管理员

        2:显示磁盘空间

        3:显示登录用户

        4:显示内存使用

        0:退出

                选择类型: 2显示磁盘空间
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_h1-lv_root   18G  3.7G   13G  23% /
tmpfs                      754M     0  754M   0% /dev/shm
/dev/sda1                  485M   32M  428M   7% /boot
是否要继续(n/y):y
else: y

        1:系统管理员

        2:显示磁盘空间

        3:显示登录用户

        4:显示内存使用

        0:退出

                选择类型: 4显示内存使用
             total       used       free     shared    buffers     cached
Mem:          1506        235       1271          0         28        135
-/+ buffers/cache:         71       1435
Swap:         1983          0       1983
是否要继续(n/y):y
else: y

        1:系统管理员

        2:显示磁盘空间

        3:显示登录用户

        4:显示内存使用

        0:退出

                选择类型: 3显示登录用户
root     pts/0        2014-08-19 01:25 (192.168.46.25)
是否要继续(n/y):n
谢谢使用!
[search@h1 818]$ 


下面来看下linux里面的select命令,select命令非常容易的就能构建交互式编程:
[search@h1 818]$ sh s.sh 
1) 查看磁盘:
2) 查看内存: 
3) 退出程序
请输入选项: 1
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_h1-lv_root   18G  3.7G   13G  23% /
tmpfs                      754M     0  754M   0% /dev/shm
/dev/sda1                  485M   32M  428M   7% /boot
请输入选项: 2
             total       used       free     shared    buffers     cached
Mem:          1506        327       1179          0         32        217
-/+ buffers/cache:         76       1429
Swap:         1983          0       1983
请输入选项: 3
谢谢使用!
[search@h1 818]$ 



源码如下:
[search@h1 818]$ cat s.sh 


PS3="请输入选项: "

select answer in "查看磁盘:"  "查看内存: " "退出程序" 
do

case $answer in

 "查看磁盘:")   df -h ;;

  "查看内存: ")  free -m ;;

 "退出程序")  echo "谢谢使用!"  ;   break;;


esac
 


done
[search@h1 818]$ 



只有控制台的形式,是非常枯燥的,下面我们来看下如何在shell的窗体中,进行编程,如果没有这个工具包,我们可以先执行yum install dialog 下载这个包:
[root@h1 ~]# yum install dialog
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.163.com
base                                                                                                                                                     | 3.7 kB     00:00     
extras                                                                                                                                                   | 3.4 kB     00:00     
updates                                                                                                                                                  | 3.4 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dialog.x86_64 0:1.1-9.20080819.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================================================================
 Package                                Arch                                   Version                                               Repository                            Size
================================================================================================================================================================================
Installing:
 dialog                                 x86_64                                 1.1-9.20080819.1.el6                                  base                                 197 k

Transaction Summary
================================================================================================================================================================================
Install       1 Package(s)

Total download size: 197 k
Installed size: 512 k
Is this ok [y/N]: y
Downloading Packages:
dialog-1.1-9.20080819.1.el6.x86_64.rpm                                                                                                                   | 197 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : dialog-1.1-9.20080819.1.el6.x86_64                                                                                                                           1/1 
  Verifying  : dialog-1.1-9.20080819.1.el6.x86_64                                                                                                                           1/1 

Installed:
  dialog.x86_64 0:1.1-9.20080819.1.el6                                                                                                                                          

Complete!
[root@h1 ~]# clear

下面看一些简单的例子,我们可以将一些结果重定向到我们指定的文件里面:



[search@h1 818]$ cat age.txt 
10[search@h1 818]$ 

上面只是一个模拟还有下面的几个命令,也可也测试下:
 dialog  --title Testing --msgbox "this is a text" 10 30
 dialog --title "请回复: " --yesno "回复啥:" 10 50
 dialog --textbox /etc/passwd 15 45
 dialog --title "选择文件吧: " --fselect  $HOME/  10  50 2>file.txt


具体的命令和使用方法,散仙在这里就不多举例子,有兴趣的朋友,可以自行上网查阅练习.
最后散仙给一个比较综合的UI小例子:


[search@h1 818]$ cat c.sh 



temp=`mktemp -t test1.XXXXXX`
temp2=`mktemp -t test2.XXXXXX`

dis() { df -k > $temp ;
  dialog --textbox $temp 20 60
 
 }

whos() { who > $temp ;
 dialog --textbox $temp 20 60

 }


mem() {

 cat /proc/meminfo > $temp
 
 dialog --textbox $temp 20 60

}



while [ 1  ]


do


dialog --menu "系统管理菜单" 20 30 10 1 "查看磁盘信息" 2 "查看登录用户" 3 "查看内存信息" 0 "退出登录" 2>$temp2


if [  $? -eq 1 ]   

then

break;

fi

selection=`cat $temp2`


#echo " 啥: $selectioin"


case  $selection  in

1) dis ;;
2) whos ;;
3) mem ;;
0) break ;;

*) dialog --msgbox  "对不起,无效的选择! " 10 30


esac


done


rm -rf $temp 2> /dev/null
rm -rf $temp2 2> /dev/null


[search@h1 818]$ 




















  • 大小: 67.6 KB
  • 大小: 64.1 KB
  • 大小: 68.6 KB
  • 大小: 77.1 KB
  • 大小: 55.3 KB
  • 大小: 139.5 KB
0
0
分享到:
评论

相关推荐

    跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战 PDF跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》分为五大部分:部分为第1章~第4章,此部分着重介绍新手如何学好Shell编程。涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量...

    跟老男孩学Linux运维:Shell编程实战.pdf 高清 带书签

    资深运维架构实战专家及教育培训界*专家十多年的运维实战经验总结,全面系统地讲解运维工作中Shell编程所需的知识点和Shell编程的各种企业级案例。

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...

    Windows Shell 编程.pdf

    Windows Shell 编程.pdf 看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是使用集成编程环境的程序人员对...

    shell编程学习资料

    Shell编程是Linux/Unix系统中不可或缺的一部分,它是一种命令行解释器,允许用户与操作系统进行交互,执行系统命令,以及编写脚本自动化任务。在本文中,我们将深入探讨Shell编程的基础知识,包括基本命令、变量、...

    Shell编程中文手册.pdf

    Shell 编程中文手册 本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell ...

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    《shell编程入门教程》、《shell脚本专家指南》以及《UNIX.shell编程24小时教程》会提供详尽的实例和练习,帮助你巩固所学并深化理解。 总之,Shell编程是Linux/Unix环境中不可或缺的技能,它能够提高工作效率,...

    shell编程题目练习

    shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    Windows Shell 编程指南与实例

    《Windows Shell 编程指南与实例》是一本深入探讨Windows操作系统壳层编程技术的专业书籍。在Windows系统中,Shell指的是用户界面,它为用户提供与操作系统交互的环境,包括桌面、开始菜单、快捷方式等。Shell编程则...

    Unix Shell Shell编程

    6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书

    shell编程个人笔记

    shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人...

    shell demo及编程pdf

    **Shell编程介绍** Shell编程是Linux/Unix操作系统中的一种脚本语言,用于自动化日常任务,交互式地控制操作系统,以及实现系统级别的程序间交互。它提供了命令行接口(CLI)来执行各种系统命令,使用户能够高效地...

    shell编程学习文档

    Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手

Global site tag (gtag.js) - Google Analytics