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

一、shell脚本介绍

c993ac27f43eaf6d8db74feb80f02fb2.png

shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径

要在我们拿到一个需求的时候有一个脚本的大致思路,想到需求怎么去实现

shell脚本可以大大提高我们的工作效率

二、shell脚本结构和执行

0ddc51210a1cb04a37a0fedb833f7ea4.png

[root@linux-01 ~]# mkdir shell //创建一个shell文件夹,存放实验的shell脚本

[root@linux-01 ~]# cd shell/

[root@linux-01 shell]# ls

[root@linux-01 shell]# vi 01.sh //创建第一个脚本01.sh

#!/bin/bash

echo "123"

w

ls

//第一行必须这样写成这样的格式,如果这个脚本在本机上执行,第一行可以省略不写,但是如果也要在其他机器上执行,就必须要写了,我们必须指定接下来的这些命令是通过哪一个解释器来操作的

[root@linux-01 shell]# sh 01.sh //运行下01.sh脚本,可以正常执行

123

00:00:46 up 2:35, 1 user, load average: 0.14, 0.06, 0.06

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.238.1 23:37 6.00s 0.20s 0.02s w

01.sh

也可以给01.sh脚本执行的权限

[root@linux-01 shell]# chmod a+x 01.sh

[root@linux-01 shell]# ./01.sh //直接使用./来执行脚本,能执行说明这些命令被解析了,被认识了

123

00:02:33 up 2:37, 1 user, load average: 0.02, 0.04, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.238.1 23:37 1.00s 0.23s 0.01s w

01.sh

在脚本第二行再写一行#!/bin/bash就被识别为解释语句了

#!/bin/bash

#written by aming //解释

#2018-07-13 //解释

#echo w ls //解释

echo "123"

w

ls

[root@linux-01 shell]# vi /etc/init.d/network //查看下系统里面的network脚本

#! /bin/bash

#

#network Bring up/down networking

#

#chkconfig: 2345 10 90 //这个有特殊意义,2345是定义它的启动级别,10是启动顺序,90是关闭的顺序

#description: Activates/Deactivates all network interfaces configured to \ //针对脚本的解释说明

#start at boot time. //如果没有这两行,没有办法加入到chkconfig列表里面去

以#开头的行作为解释说明,可以写版权,写日期,解释脚本做什么用的等等

脚本的名称以.sh结尾,用于区分这是一个shell脚本

执行shell脚本的两种方法;

1、bash 01.sh 或者 sh 01.sh

2、chmod +x 01.sh ,然后使用./01.sh ,./是相对路径,也可以直接写绝对路径找到这个脚本直接执行也可以# /root/shell/01.sh来执行01.sh脚本

sh -x 01.sh ,其中-x选项是显示shell脚本执行的过程,每一个+表示一个操作

[root@linux-01 shell]# sh -x 01.sh

echo 123

123

w

07:10:42 up 3:29, 2 users, load average: 0.01, 0.02, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.238.1 23:37 7:03m 0.30s 0.30s -bash

root pts/1 192.168.238.1 06:27 2.00s 0.10s 0.00s sh -x 01.sh

ls

01.sh

[root@linux-01 shell]# sh -n 01.sh //使用-n选项查看shell脚本有没有语法错误,仅检测语法错误

三、date命令用法

1c8ba24958db702ad526048547fa6392.png

date在shell中作用很大,比如在一个脚本中标记一个日志,或者针对某一个文件做更改,可以使用date给它做一些装饰,比如每天备份一个sql文件,加上日期,就可以知道sql文件是哪一天生成的。

也可以按照周生成备份文件,比如周一生成1.sql,周二生成2.sql以此类推,每周生成7个备份文件,下周再生成新的1.sql文件上自动把上周备份的1.sql文件覆盖掉,不需要我们手动去删除备份文件了,它可以自动去覆盖名字相同的文件,所以date在shell中非常有用,实用。

[root@linux-01 ~]# date +%Y //使用%Y表示四位数的年份

2018

[root@linux-01 ~]# date +%y //使用%y表示两位数的年份

18

[root@linux-01 ~]# date +%m //使用%m表示月份

07

[root@linux-01 ~]# date +%M //使用%M表示分钟

53

[root@linux-01 ~]# date +%d //使用%d表示日期

14

[root@linux-01 ~]# date +%D //使用%D表示月/日/年 这样格式的年月日

07/14/18

[root@linux-01 ~]# date +%Y%m%d //把%Y%m%d组合起来使用表示的就是年月日

20180714

[root@linux-01 ~]# date +%F //使用%F表示带横杠的年月日,显示的更友好

2018-07-14

[root@linux-01 ~]# date +%H //使用%H表示小时

15

[root@linux-01 ~]# date +%S //使用%S表示秒

07

[root@linux-01 ~]# date +%s //使用%s表示时间戳,距离1970年1月1日0点0分到现在过去了多少秒

1531551793

[root@linux-01 ~]# date +%T //使用%T表示时间

16:23:53

[root@linux-01 ~]# date +%H%M%S //使用%H%M%S表示时分秒

162715

[root@linux-01 ~]# date +%H:%M:%S //中间加上冒号显示的更友好,等同于%T

16:27:28

[root@linux-01 ~]# date +%w //使用%w表示周几

6

[root@linux-01 ~]# date +%W //使用%W表示今天是今年的第多少周

28

[root@linux-01 ~]# cal //cal命令可以显示日历

July 2018

Su Mo Tu We Th Fr Sa

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切割日志的时候,它会在每天的凌晨0点钟去切割前一天的日志,这时候需要标注的日期是前一天的日期,这时候可以使用date 标记昨天的日期:

[root@linux-01 ~]# date -d "-1 day" //这样就显示了昨天的日期

Fri Jul 13 16:40:59 CST 2018

[root@linux-01 ~]# date -d "-1 day" +%F //加上%F更友好的显示年月日

2018-07-13

[root@linux-01 ~]# date -d "-1 month" +%F //使用month表示上个月,一月前

2018-06-14

[root@linux-01 ~]# date -d "-1 years" +%F //使用years表示上一年,同样的day和month都可以加s

2017-07-14

[root@linux-01 ~]# date -d "-1 year" +%F //使用year效果一样

2017-07-14

[root@linux-01 ~]# date -d "-1 hour" +%T //使用hour表示时一小时前

15:48:44

[root@linux-01 ~]# date -d "-1 min" +%T //使用min表示一分钟前,秒也是可以这样表示的

16:51:13

[root@linux-01 ~]# date +%s -d "2018-07-14 16:55:23" //把具体的时间换算成时间戳

1531558523

[root@linux-01 ~]# date -d @1531558523 //反过来也可以把时间戳换算成具体的时间

Sat Jul 14 16:55:23 CST 2018

四、shell脚本中的变量

fef0f5026b0e6e65c1c7c14ad3b6a4e5.png

shell脚本中到处都是使用变量的,简单讲,变量其实就是一个变化的参数,一个数值,一个字符串,可以反复使用它,调用它

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值