一、shell脚本介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

  • shell是一种脚本语言;
  • 可以使用逻辑判断、循环等语法;
  • 可自定义函数;
  • shell是系统命令的集合;
  • shell脚本可以实现自动化运维,能大大增加我们的运维效率;

二、shell脚本结构和执行

1、结构

  • 开头需要“#!/bin/bash“;
  • 脚本内容中以#开头的行作为解释说明;
  • 编写脚本时备注:作者、时间、功能等信息,方便之后查看;
  • 脚本的名字用“.sh”结尾,用于区分这是一个shell脚本;

2、执行方式

1、作为可执行程序:给脚本添加执行权限chmod a+x test.sh,然后直接执行该脚本./test.sh; 2,作为解释器参数:使用sh执行# sh test.sh;

3、参数

-x:sh -x test.sh 查看脚本执行过程 -n:sh -n test.sh 检测语法错误

三、date命令用法

date命令用于显示或设置系统时间与日期。 命令选项:

-d :显示字符串指定的日期与时间(字符串前后必须加上双引号) -s:根据字符串来设置时间与日期(字符串前后必须加双引号)

命令实例:

[root@zlinux-01 ~]# date               //显示当前日期时间
2018年 04月 17日 星期二 19:54:50 CST
[root@zlinux-01 ~]# cal               //当前日历
      四月 2018     
日 一 二 三 四 五 六
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

[root@zlinux-01 ~]# date +%Y          //显示年份
2018
[root@zlinux-01 ~]# date +%y           //年份简写
18
[root@zlinux-01 ~]# date "+%Y-%m-%d %H:%M:%S %w"               //年月日,时分秒,星期
2018-04-17 19:58:30 2
[root@zlinux-01 ~]# date +%F        //完整日期的另一种显示
2018-04-17
[root@zlinux-01 ~]# date +%W          //一年中的第几周
16 
[root@zlinux-01 ~]# date +%T                //当前时间
20:01:19
[root@zlinux-01 ~]# date "+%F %T"        //日期时间
2018-04-17 20:01:45
[root@zlinux-01 ~]# date +%s              //时间戳(显示从1970年1月1日00:00:00到目前经历的秒数)
1523966522
[root@zlinux-01 ~]# date -d @1523966522              //时间戳转化成具体日期
2018年 04月 17日 星期二 20:02:02 CST
[root@zlinux-01 ~]# date +%s -d "2018-04-17 20:04:59"         //日期转化为时间戳
1523966699
[root@zlinux-01 ~]# date -d "-1 year" +%Y    //前一年
2017
[root@zlinux-01 ~]# date -d "-1 month" +%m   //前一月
03
[root@zlinux-01 ~]# date -d "-1 day" +%d      //前一天
16
[root@zlinux-01 ~]# date -d "2 year 2month 2 day" +%Y-%m-%d          //当前日期的下2年的下2月下2天
2020-06-19

四、shell中的变量

  • 当脚本中使用某个字符串,多次频繁并且字符串长度很长时,就应该使用变量代替
  • 使用条件语句时,常使用变量 if [ $a -gt 1];then ...;fi
  • 引用某个命令的结果时,用变量替代 n=wc -l 1.txt
  • 写和用户交互的脚本时,变量也是必不可少的 read -p "lnput a number:" n; echo $n 如果没有写这个n, 可以直接使用$REPLY
  • 内置变量 $0,$1,$2... $0表示脚本本身,$1 第一个参数,$2第二个... $#: 表示参数个数
  • 数学运算a=1;b=2;c=$($a+$b)或者$[$a+$b]