20.1 shell脚本介绍
20.2 shell脚本结构和执行
20.3 date命令用法
20.4 shell脚本中的变量
20.1 shell脚本介绍
shell
是一种脚本语言
。它既有自己的语法规制,可以使用逻辑判断、循环等语法
,也可以自定义函数
。
shell是系统命令的集合
,并且通过主机的语法可以对命令进行判断等。
shell脚本可以实现自动化运维
,它能大大增加我们的运维效率。
20.2 Shell脚本结构和执行
- shell脚本结构
- 开头需要加
#!/bin/bash
#!/bin/bash
是告诉系统通过/bin/bash解析器
来解析操作脚本的 - 以
#
开头的行作为解释说明 - 脚本的名字以
.sh
结尾,用于区分这是一个shell脚本
- 开头需要加
1 | [root@kun05 shell]# vim hello.sh |
1 | #!/bin/bash |
- 执行方法有两种
- chmod +x 1.sh; ./1.sh
- bash 1.sh
1 | [root@kun05 shell]# chmod a+x hello.sh |
也可以1
2
3[root@kun05 shell]# sh hello.sh
this is first shell script.
Hello World!
查看脚本执行过程 bash -x 1.sh
1 | [root@kun05 shell]# sh -x hello.sh |
查看脚本是否语法错误 bash -n 1.sh
1 | #!/bin/bash |
1 | [root@kun05 shell]# sh -n hello.sh |
这里是for循环没写完整
20.3 date命令用法
date 显示当前系统时间 在shell脚本中才用于标志时间
1 | [root@kun05 shell]# date |
命令 | 含义 |
---|---|
date +%Y | 年(4位) |
date +%y | 年(2位) |
date +%m | 月 |
date +%d | 日 |
date +%D | 以 月/日/年 格式显示日期 |
date +%F | 以 年-月-日 格式显示日期 |
date +%H | 小时 |
date +%M | 分钟 |
date +%S | 秒 |
date +%T | 以时:分:秒 格式显示时间 等于 date +%H:%M:%S |
date +%s | 时间戳 表示距离1970年1月1日到现的秒数 |
date +%w | 这个星期的第几周 |
date +%W | 今年的第几周 |
date +%h | 月份缩写 等于 date +%b |
date -d “-1 day” | 一天前 |
date -d “+1 day” | 一天后 |
date -d “-1 year” | 一年前 |
date -d “-1 month” | 一个月前 |
date -d “-1 hour” | 一小时前 |
date -d “-1 min” | 一分钟前 |
显示日期
1 | [root@kun05 shell]# date +%Y%m%d |
显示时间
1 | [root@kun05 shell]# date +%T |
显示时间戳
1 | [root@kun05 shell]# date +%s |
显示一天后的时间
1 | [root@kun05 shell]# date -d "+1 day" +%F |
显示一小时前的时间
1 | [root@kun05 shell]# date -d "-1 hour" +%T |
用时间戳来显示日期
1 | [root@kun05 shell]# date -d @1531346417 |
指定时间来显示对应的时间戳
1 | [root@kun05 shell]# date +%s -d"2018-07-13 06:02:30" |
cal 显示系统日历
1 | [root@kun05 shell]# cal |
20.4 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]