码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-07-16 00:59:13      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:ges   configure   ace   col   %s   区分   就是   机器   blog   

一、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
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脚本中到处都是使用变量的,简单讲,变量其实就是一个变化的参数,一个数值,一个字符串,可以反复使用它,调用它

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

标签:ges   configure   ace   col   %s   区分   就是   机器   blog   

原文地址:http://blog.51cto.com/13669226/2143907

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!