标签:语言 space 区分 一起 系统命令 通过 $0 txt 当前时间
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]
Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)
标签:语言 space 区分 一起 系统命令 通过 $0 txt 当前时间
原文地址:http://blog.51cto.com/13407306/2069395