12月27日任务
20.1 shell脚本介绍
20.2 shell脚本结构和执行
20.3 date命令用法
20.4 shell脚本中的变量
shell脚本介绍
shell是一种脚本语言,是一名运维工程师所必需掌握的最基本的能力。通过使用shell可以实现简单的自动化运维,从而减轻我们的工作压力,增加实际的工作效率。
shell脚本是系统命令的集合,通过使用shell的逻辑判断、循环语法、自定义的函数,可以实现更复杂功能脚本的编写。配合Linux的crond服务,能够实现周期性操作的自动化运行,从而大大减少运维工作量。
shell脚本的学习需要做到多学多练,熟能生巧。另外Linux基础知识也不容忽视,它是编写一个shell脚本的基础。只有勤学、多练,多思考,这样才能尽快、更好的学好shell编程。
Shell脚本结构和执行方法
一个shell脚本是以.sh
结尾的文件,文件开头#!/bin/bash
。 对于本机而言#!/bin/bash
并不是必须的,但是对于其他机器上,不加开头就不一定可以执行,它的意思即其后的代码是由/bin/bash
命令进行解析的。所以编写shell时最好都写上。
范例:example1.sh
vim example1.sh
#!/bin/bash
# by test
echo "hello world"
由#开头的行在shell中为注释行(#!除外),此外有些特殊的脚本中#开始的行并一定是注释,例如chkconfig脚本。
执行脚本的方法
- 先赋予执行权限,再./执行
# 这里脚本在当前工作目录中,执行其他路径下的脚本需要使用绝对路径
chmod +x example1.sh
./example
- 使用bash命令
bash example1.sh
查看脚本执行过程
sh -x example1.sh
检测脚本语法
# 没信息表明没有语法错误
sh -n example1.sh
date命令用法
date命令在shell脚本内十分有用,它可以生成想要的时间格式。
默认date命令显示
[root@localhost shell]# date
常用的几种时间格式表示
# 日期 YYYY-MM-DD 格式
date +%F == date +%Y-%m-%d
# 时间 HH:MM:SS 格式
date +%T == date +%H:%M:%S
# 几天前、后...
date -d "+1 day" // 一天后(明天的日期)
date -d "-1 day" // 一天前(昨天的日期)
date -d "-1 month" // 一月前(上个月的今日)
date -d "-1 min" // 一分钟前
# 自1970-01-01后的秒数
date +%s
# 将+%s的秒数换为具体时间
date -d @1504697280
# 将具体时间描述换算为秒数
date +%s -d "2018-02-05 19:30:00"
#星期几即本年的第几周
date +%w --> 1 //星期一
date +%W --> 06 //18年的第6周
date +%a --> Mon //周一
date +%A --> Monday //周一全称
# 月份
date +%b --> Feb
date +%B --> February
Shell脚本的变量
shell变量的使用场景
字符串替换
shell的编写过程中,如果某些字符串多次使用并且字符串的长度较长时可以使用shell变量进行代替,在使用时使用$变量
进行操作,减少重复劳动。例如某些命令的绝对路径表示。
条件判断
此外在shell条件判断语句时,也常用变量,例如:
if[ $a -gt 1 ]
then
...
fi
命令引用
引用某个命令的结果时,将命令的结果赋予某个变量,在后续便于进行判断等条件处理。例如 n=wc -l 1.txt
命令交互
写于用户交互的脚本时,变量也是必不可少的。例如:
read -p "Input a number: " n
echo $n
内置变量
shell内有一些内置变量,其使用场景还是比较广泛的。
$0 --> 脚本本身
$1 --> 脚本后接的第一个参数
$2 --> 脚本后接的第二个参数
$# --> 参数的个数
$@ -->
数学运算
shell内可以进行简单的数学运算:
a=1
b=2
c=$(($a+$b)) //或c=$[$a+$b]