linux 脚本设置时间变量,Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)...

Shell是什么

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

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

可以自定义函数

shell是系统命令的集合

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

Shell脚本结构和执行方法

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

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

[root@congji shell]# ll /bin/sh

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

[root@congji 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 + 脚本        (每一个+表示一个动作)

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

+ echo renxinrui

renxinrui

+ ls

01.sh

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

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

[root@congji shell]# cat 01.sh

#!/bin/bash

for i in `seq 1 10`

do

echo $i

[root@congji shell]# sh -n 01.sh

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

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

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

[root@congji shell]# sh  01.sh

1

2

3

4

5

6

7

8

9

10

date命令用法

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

[root@congji ~]# date

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

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

[root@congji ~]# date +%Y                   (显示4位数年)

2018

[root@congji ~]# date +%y                    (显示2位数年)

18

[root@congji ~]# date +%m                    (显示月份)

01

[root@congji ~]# date +%d                    (显示日期)

11

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

20180111

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

01/11/18

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

2018-01-11

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

[root@congji ~]# date +%H                      (显示当前的小时)

00

[root@congji ~]# date +%M                       (显示当前的分钟)

20

[root@congji ~]# date +%S                        (显示当前多少秒)

36

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

1515601302

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

[root@congji ~]# date +%H%M%S

002910

[root@congji ~]# date +%T

00:29:16

把全部的参数组合起来:

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

2018-01-11/00:35:58

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

2018-01-11/00:36:45

所以我们得出结论

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

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

[root@congji ~]# date +%w        (显示今天是周几)

4

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

02

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

[root@congji ~]# 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点,时间就会显示后一天。所以我们要学会增加减少,我们以减少为例。

[root@congji ~]# date

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

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

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

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

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

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

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

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

[root@congji ~]# date +%s

1515603280

[root@congji ~]# 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]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值