Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)相关的知识,希望对你有一定的参考价值。

Shell是什么

Shell是一种脚本语言,和传统语言C,Python...相比还是比较简单的。

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

可以自定义函数

shell是系统命令的集合

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


Shell脚本结构和执行方法

1.开头必须要#!/bin/bash  解释器命令,下面的命令是通过哪一个解释器执行的


我们发现sh其实只是bash的软连接

[[email protected] shell]# ll /bin/sh

lrwxrwxrwx. 1 root root 4 10月 20 08:08 /bin/sh -> bash

[[email protected] shell]# ll /bin/bash

-rwxr-xr-x. 1 root root 960392 8月   3 2016 /bin/bash


2.除过第一行,剩下以#开头的大多只是作为解释说明用


3.脚本的名字通常以.sh结尾,用于区分这是一个shell脚本。


4.执行方法有两种

(1)chmod +x 01.sh;./01.sh    先给脚本执行权限,然后用相对路径执行(因为$PATH里有/bin/的路径)

(2)bash 01.sh 或者 sh 01.sh


5.查看脚本执行过程

sh -x + 脚本        (每一个+表示一个动作)

[[email protected] shell]# sh -x 01.sh 

+ echo renxinrui

renxinrui

+ ls

01.sh


6.查看脚本是否语法错误 bash -n 01.sh

(我们为了看到实验效果,故意写一个错的脚本,在for循环的结尾少写一个done)

[[email protected] shell]# cat 01.sh 

#!/bin/bash

for i in `seq 1 10`

do

   echo $i

[[email protected] shell]# sh -n 01.sh                 

01.sh:行6: 语法错误: 未预期的文件结尾


它提示报错,那我们加上done试试,

[[email protected] shell]# sh -n 01.sh          (执行后没有报错,也没有返回值)

[[email protected] shell]# sh  01.sh 

1

2

3

4

5

6

7

8

9

10


date命令用法

在shell里直接输入date,会显示时间信息。

[[email protected] ~]# date 

2018年 01月 11日 星期四 00:00:07 CST


那么加上参数他会怎么显示呢

[[email protected] ~]# date +%Y                   (显示4位数年)

2018

[[email protected] ~]# date +%y                    (显示2位数年)

18

[[email protected] ~]# date +%m                    (显示月份)

01

[[email protected] ~]# date +%d                    (显示日期)

11

[[email protected] ~]# date +%Y%m%d                  (如果把他们综合在一起就会显示当前日期)

20180111

[[email protected] ~]# date +%D                    (以月,日,年的方式显示时间)

01/11/18

[[email protected] ~]# date +%F                     (以年-月-日的方式显示时间)

2018-01-11


既然有年月日,那就有分钟和小时

[[email protected] ~]# date +%H                      (显示当前的小时)

00

[[email protected] ~]# date +%M                       (显示当前的分钟)

20

[[email protected] ~]# date +%S                        (显示当前多少秒)

36

[[email protected] ~]# date +%s                       (这是一个时间戳,举例1970年1月1日0点过去了多少秒)

1515601302


我们可以把所有的参数组合起来显示多少秒,也可以直接加T显示多少秒,用T显示的更为清楚

[[email protected] ~]# date +%H%M%S

002910

[[email protected] ~]# date +%T

00:29:16


把全部的参数组合起来:

[[email protected] ~]# date +%Y-%m-%d/%H:%M:%S     (为了更清晰的看到结果,我们给中间加上了分隔符)

2018-01-11/00:35:58

[[email protected] ~]# date +%F/%T              (同样我们用F和T也能显示出同样的效果)

2018-01-11/00:36:45

所以我们得出结论

date +%Y-%m-%d = date +%F

date  +/%H:%M:%S = date +%T


[[email protected] ~]# date +%w        (显示今天是周几)

4

[[email protected] ~]# date +%W        (显示今天是今年的第几周)

02


更直观的我们可以用cal命令,像日历一样显示时间,会显示日期,只是这里复制不出来。

[[email protected] ~]# 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


现在有一个实例,今天是1月11日,你要写一个切割日志脚本,在每天的0点切割日志,但是我们都知道,一到0点,时间就会显示后一天。所以我们要学会增加减少,我们以减少为例。

[[email protected] ~]# date

2018年 01月 11日 星期四 00:54:00 CST


[[email protected] ~]# date -d "-1 day"                    (显示当前时间提前一天)

2018年 01月 10日 星期三 00:54:02 CST


[[email protected] ~]# date -d "-1 month"                    (显示当前时间提前一小时)

2017年 12月 11日 星期一 00:54:12 CST


[[email protected] ~]# date -d "-1 min"                     (显示当前时间提前一分钟)

2018年 01月 11日 星期四 00:53:19 CST


我们知道显示时间戳是%s,那么如何让时间戳显示成日期呢?

[[email protected] ~]# date +%s

1515603280

[[email protected] ~]# date -d @1515603280 

2018年 01月 11日 星期四 00:54:40 CST


Shell脚本中的变量

当脚本中使用某个字符串比较频繁,并且字符串长度很长时间,就应该使用变量代替,使脚本变的简单明了


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


引用某个命令时,用变量替代 n='wc -l 1.txt'


写用户交互脚本时,变量也是必不可少的


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


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


以上是关于Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)

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

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

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

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

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