Shell脚本介绍
shell是一种脚本语言,.相比传统语言C,Python还是比较简单的
可以到blog.lishiming.net查看shell练习题目
可以使用逻辑判断、循环等语法
可以自定义函数
shell是系统命令的集合
shell脚本可以实现自动化运维,能大大增加我们的运维效率
Shell脚本结构和执行
开头需要加#!/bin/bash //通过什么解释器来运行的
除了第一行以#开头的是用来定义以什么解释器运行的,其他的以#开头的行作为解释说明
脚本的名字以.sh结尾,用于区分这是一个shell脚本,python是.py结尾的
执行shell的脚本方法有两种
1、直接执行如下
[root@ahao01 shell]# chmod +x 1.sh
[root@ahao01 shell]# ./1.sh //想对当前目录下的
# /root/shell/1,sh 绝对路径的以上这两个都是需要给脚本执行权限,否则无法运行,
2、sh或者bash运行模式
[root@ahao01 shell]# sh 1.sh
[root@ahao01 shell]# bash 1.sh
可以不用给脚本执行权限就可以运行,但是当把脚本写入任务计划的时候建议用第一种,并给他执行权限
查看一个脚本的执行过程 : -x
[root@ahao01 shell]# sh -x 1.sh + echo '!'!
检测一个脚本是否语法错误: -n
[root@ahao01 shell]# sh -n 1.sh如没有输出表示脚本正常,相反有问题
date命令用法
[root@ahao01 shell]# date +%Y //显示完成的年份2018
[root@ahao01 shell]# date +%y //显示年份后两位,比如今年2018则显示1818
[root@ahao01 shell]# date +%m //显示当前系统时间的月份05
[root@ahao01 shell]# date +%d //显示几号29
[root@ahao01 shell]# date +%h //显示英文的月份May
[root@ahao01 shell]# date +%H //查看当前时间是第几小时
[root@ahao01 shell]# date +%M //查看分钟
[root@ahao01 shell]# date +%S //查看秒
[root@ahao01 shell]# date +%s //距离1970年0点0分过去多少秒
组合模式
获取当前系统日期
[root@ahao01 shell]# date +%Y%m%d20180529
[root@ahao01 shell]# date +%F 以年-月-日的方式显示时间2018-05-29
获取当前系统时间
[root@ahao01 shell]# date +%T
[root@ahao01 shell]# date +%H:%M:%S19:11:31
获取第几周
[root@ahao01 shell]# date +%w //礼拜几
[root@ahao01 shell]# date +%W //今年的第几周
查看日历
[root@ahao01 shell]# cal //查看日历

root@ahao01 shell]# date -d " -1 day" +%F //一天前的
[root@ahao01 shell]# date -d "-1 month" +%F //查看上个月
[root@ahao01 shell]# date -d "-1 years" +%F //查看去年的今天
[root@ahao01 shell]# date -d "-1 hour" +%T //查看一小时前注:-1是一天前,+1是一天后
时间戳
[root@ahao01 shell]# date +%s //时间戳1527636065
日期换成时间戳
[root@ahao01 shell]# date +%s -d "2018-05-28 21:20:39"1527556839
时间戳换成日期
[root@ahao01 shell]# date -d @1527556839Mon May 28 21:20:39 EDT 2018
Shell脚本中的变量
当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替
使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ... ; fi
引用某个命令的结果时,用变量替代 n=`wc -l 1.txt`
写和用户交互的脚本时,变量也是必不可少的 read -p "Input a number: " n; echo $n 如果没写这个n,可以直接使用$REPLY
内置变量 $0, $1, $2… $0表示脚本本身,$1 第一个参数,$2 第二个 .... $#表示参数个数
数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]


