shell脚本编程之补充知识点

一、处理用户输入

  shell中使用read命令来实现与用户的交互输入。

  格式:read [options] 变量

   常用选项:

     -p “提示信息”:显示提示信息;

     -t #:等待用户输入的秒数;

     -a:输入数组元素。

1.jpg

二、生成随机数

  使用变量RANDOM可以生成随机数,取值范围为0-32768。

1.jpg

  随机数相关的设备文件:/dev/random、/dev/urandom。

三、输出字体的控制

  shell中可以对输出的字体进行定义,下面的例子中对"hello"的字体进行了编辑。

2.jpg

  格式说明:

    \033[m\033: 对于字体定义的规定用法;

    下面从左到右以分号为分隔符其含义为:

    1:字体的形式,如粗体,斜体,下划线等,取值范围1-7;

    37:字体本身的颜色;

     30:黑色;

     31:红色;

     32:绿色;

     33:黄色;

     34:蓝色;

     35:洋红;

     36:青色;

     37:白色;

    41:字符的背景色,其中4表示字体背景,下一个数字表示背景颜色取值为1-7;

     40:黑色;

     41:红色;

     42:绿色;

     43:黄色;

     44:蓝色;

     45:洋红;

     46:青色;

     47:白色;

    [0m: 表示颜色应用只限于指定字符,如不使用此选项,则下面显示均会带有颜色。

四、变量相关

  1、获取变量值的长度

    格式:echo ${#变量名}

1.jpg

  2、变量赋值

    ${parameter:-word}:如果parameter为空或未定义,则返回为"word";否则,返回parameter的值;

1.jpg

    ${parameter:+word}:如果parameter为空或未定义,则不做任何操作;否则,返回"word";

2.jpg

    ${parameter:=word}:如果parameter为空或未定义,不但返回"word";而且将parameter赋值为"word";

3.jpg 

    ${parameter:?word}:如果parameter为空或未定义,则返回内容为"word"的报错信息,否则返回parameter的值。

4.jpg

    ${parameter:offset:length}:如果将parameter偏移offset个字符,并截取length长度的字符;

5.jpg

五、函数中的局部变量 

  函数中可以定义只在函数内部生效的变量,其作用域只在函数内有效。 

  格式:local 变量名=值

1.jpg

  上例的结果说明了局部变量的作用域只在函数内,再来看下未声明为局部变量的结果:

5.jpg

六、创建临时文件或目录

  命令格式:mktemp [options] [template]

    常用选项:

      -d:创建目录;

    template格式:name.XXX 

      XXX:三个大写x,用于自动生成随机数。

      eg:mktemptemp.XXX

1.jpg

七、信号

  1、常用的信号类型:

    1:SIGHUP  挂起进程

    2:SIGINT  终止进程

    9:SIGKILL  强制终止进程

    15:SIGTERM  正常终止进程

  脚本中能实现信号捕捉,但9和15无法捕捉。

  我们常用的ctrl+c快捷键发送的是SIGINT信号。

  可以使用kill -l来查看所有的信号。

 2、信号捕捉

   使用trap命令可以实现信号捕捉,并针对捕捉到的信息指定想要执行的命令。 

   命令格式:trap “命令1;命令2” 信号列表

1.jpg

   上例中当使用Ctrl+c时就会出现"Hi,byeybye"的信息。

1.jpg

   上面这个脚本使用Ctrl+c无法终止,因为信号INT产生的命令为echo "go…";

2.jpg

   trap还可以捕捉到脚本的退出,如下例所示:

1.jpg

    可以使用单有破折线来移除捕捉命令,格式为:trap – 信号

1.jpg

    上例中在命令行定义捕捉到INT信号时显示"Hello”,此时只要使用Ctrl+c快捷键就会显示“Hello”,只有在使用了移除命令之后才能恢复默认的信号命令。

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/10770

(0)
petmasterpetmaster
上一篇 2016-02-14
下一篇 2016-02-14

相关推荐

  • 推荐-Nginx Rewrite的应用-根据访问平台做简单跳转

    Nginx Rewrite的应用-根据访问平台做简单跳转 Nginx Rewrite的应用-根据访问平台做简单跳转 Rewrite模块简介 Rewrite的配置 使用不同平台进行测试 配置参数详解 Rewrite模块简介    Rewrite最主要的作用就是对URL进行重写,即重定向。举个简单的例子,我们用电脑打开淘宝显示出的页面与手机打开显示出的页面,或者…

    Linux干货 2016-03-27
  • 用shell脚本实现每天定时收集全网日志到一台服务器

    需求 现在公司有这样一个需求,需要收集每天全网运行业务的设备上的某个特定目录底下的日志到一台服务器(这台服务器我们简称logserver),这并在这台logserver上生成以日期为名字的目录 解决思路: 在logserver的crontab里设置两个脚本,在当日晚上23:30执行脚本1收集当日即将被删除的全网脚本;在并在早上8:30执行脚本2,收集昨日全网…

    Linux干货 2015-07-27
  • 网络25期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-11-14
  • CentOS Linux 系统计划任务简单介绍

    CentOS  Linux 系统计划任务简单介绍 §·linux 系统计划任务 ※·linux中Centos计划任务的程序为:cron 周期性任务计划:cron 相关的程序包: cronie: 主程序包,提供crond守护进程及相关辅助工具 cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任…

    Linux干货 2016-09-08
  • man命令的用法

    man 命令的用法    在linux运维工作中,经常会有一些命令我们不是很清楚它们的准确用法,这时候我们就需要去查询这些命令的用法,linux中就有很多文档帮助我们去了解这些命令的用法,其中就有一条命令man,下面我就总结一下它的用法。     man 是 manual 的简写,提供命令的帮助文件。   &…

    Linux干货 2017-02-17
  • session sticky + session cluster 实战

    前言 在做负载均衡集群的时候,如果后端是应用服务器,我们就有一个不得不考虑的一个问题:会话绑定。为了追踪会话,我们常见的有三种方式:(1)session sticky:会话粘性,常见有2种方式: source_ip:采用源地址绑定方式 nginx:ip_hash,ip地址哈希 haproxy:source lvs:sh,源地址哈希 cookie:基于cook…

    Linux干货 2017-02-13

评论列表(1条)

  • stanley
    stanley 2016-02-14 10:02

    恭喜 petmaster 升级为免检用户(后面的文章无需审核)赞!