shell脚本介绍&shell脚本结构和执行&date命令用法&shell脚本中的变量

20.1 shell脚本介绍

• shell是一种脚本语言  aming_linux  blog.lishiming.net

• 可以使用逻辑判断、循环等语法

• 可以自定义函数

• shell是系统命令的集合

• shell脚本可以实现自动化运维,能大大增加我们的运维效率

20.2 shell脚本结构和执行

shell脚本结构

开头

开头需要加#!/bin/bash

[root@linux-5 ~]# mkdir shell
[root@linux-5 ~]# cd shell
[root@linux-5 shell]# vim lem01.sh
#!/bin/bash

写shell脚本,第一行必须写#! /bin/bash,固定格式,作用是指定脚本中命令所需的解释器,脚本若是在当台机器上去执行,可以不加这一行也没关系,因为它知道下面若干条的命令能在这台机器上去执行,去解析,通常都是 /bin/bash 解释器来执行的

/bin/bash也是一条命令, /bin/bash 和 /bin/sh 是同一个文件

[root@linux-5 shell]# ll /bin/bash
-rwxr-xr-x. 1 root root 960472 8月   3 2017 /bin/bash
[root@linux-5 shell]# ll /bin/sh
lrwxrwxrwx. 1 root root 4 3月   4 05:42 /bin/sh -> bash

lem01.sh文件内容就是被/bin/bash所解析的

若shell脚本中首行没有/bin/bash ,可以使用 /bin/bash lem01.sh去执行

解释说明

以#开头的行作为解释说明,除了脚本首行的特殊性以外,若是在shell脚本中的第二行写入#号开头的行, 就表示解释说明的作用

shell脚本执行

运行shell脚本有两种方法

一种是sh lem01.sh运行shell脚本

另一种方法

先 chmod a+x lem01.sh 给文件加一个执行权限

再 ./lem01.sh 去执行

[root@linux-5 shell]# chmod a+x lem01.sh
[root@linux-5 shell]# ./lem01.sh

这里的 ./ 就相当于一个相对路径,相对当前一个路径

也可以使用绝对路径去执行脚本 /root/shell/lem01.sh ,其实就是找到这个文件去执行

查看脚本执行过程

执行时加入-x,-x就是显示脚本执行的过程

[root@linux-5 shell]# sh -x lem01.sh
+ w
 11:36:51 up 33 min,  1 user,  load average: 0.01, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.88.1     11:06    3.00s  0.04s  0.00s sh -x lem01.sh

每一个加号,表示一个操作步骤

查看脚本是否有语法错误

执行时加入-n,-n就是检测脚本执行是否有语法错误

[root@linux-5 shell]# sh -n lem01.sh
[root@linux-5 shell]#

若是没有任何的输出,那么脚本则没有错误

20.3 date命令用法

date命令,可以显示当前系统时间日期

[root@linux-5 shell]# date
2018年 07月 12日 星期四 11:58:05 CST

date命令在shell中的作用

date命令,在shell中用处非常大;对文件后缀增加一个时间,以便后期管理

常见的日期单位

[root@linux-5 shell]# date +%Y
2018	    //四位的年
[root@linux-5 shell]# date +%y
18		    //两位的年
[root@linux-5 shell]# date +%m
07		    //月份
[root@linux-5 shell]# date +%h
7月		    //月份
[root@linux-5 shell]# date +%w
4		    //表示周几
[root@linux-5 shell]# date +%W
28		    //今年的第几周,今年的第28周
[root@linux-5 shell]# date +%d
12   	    //日期
[root@linux-5 shell]# date +%D
07/12/18	//直接标记年月日,不过格式比较特殊
[root@linux-5 shell]# date +%Y%m%d
20180711	//年月日
[root@linux-5 shell]# date +%F
2018-07-11	//年月日,这种带横杠的

常见的时间单位

[root@linux-5 shell]# date +%H
12			//小时
[root@linux-5 shell]# date +%M
32		    //分钟
[root@linux-5 shell]# date +%S
53			//秒
[root@linux-5 shell]# date +%T
13:41:37    //整体时间
[root@linux-5 shell]# date +%s
1531322044	//这是一个时间戳,距离1970年1月1日0点0分总共过去多少秒

显示日历

[root@linux-5 shell]# 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 31

标记指定的日期

在做nginx日志切割的时候,到了凌晨切割日志,到了零点零分切割的日志是前一天的日志。所以把日志加一个时间标记的话,应标记为昨天的日期

减号- 表示之前的日期,加号 + 表示从今往后的日期

date -d "-1 day" +%F      ##显示前一天的日期

date -d "-1 month" +%F    ##显示上个月的日期

date -d "-1 years" +%F    ##显示上一年的日期

date -d "+1 hour" +%T     ##显示下一小时

时间戳换算

[root@linux-5 shell]# date +%s -d "2018-07-12 13:48:11"
1531374491
[root@linux-5 shell]# date -d @1531374491
2018年 07月 12日 星期四 13:48:11 CST

20.4 shell脚本中的变量

•当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替

• 使用条件语句时,常使用变量    if [ $a -gt 1 ]; then ... ; fi

• 引用某个命令的结果时,用变量替代   n=`wc -l 1.txt`

• 写和用户交互的脚本时,变量也是必不可少的  read -p "Input a number: " n; echo $n   如果没写这个n,可以直接使用$REPLY

• 内置变量 $0, $1, $2…    $0表示脚本本身,$1 第一个参数,$2 第二个 ....       $#表示参数个数

• 数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

转载于:https://my.oschina.net/u/3804357/blog/1844751

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值