linux中shell脚本中date,shell脚本介绍shell脚本结构和执⾏
date命。。。
⼀、shell脚本介绍
shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径
要在我们拿到⼀个需求的时候有⼀个脚本的⼤致思路,想到需求怎么去实现
shell脚本可以⼤⼤提⾼我们的⼯作效率
⼆、shell脚本结构和执⾏
[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
linuxshell脚本怎么运行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命令⽤法
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脚本中的变量
shell脚本中到处都是使⽤变量的,简单讲,变量其实就是⼀个变化的参数,⼀个数值,⼀个字符串,可以反复使⽤它,调⽤它
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论