shell脚本意义
shell是一种脚本语言,具备计算机语言的基本特点:逻辑判断、循环、自定义函数等。
shell脚本 主要使用 linux系统的命令,来实现特定目的。
可用于自动化运维,提长运维效率。
-
shell脚本基本结构和运行方法
shell脚本名字以.sh为结尾,标明是一个shell脚本。但系统不是以后缀名区分文件。
shell脚本开头要标注bang shell,即指明运行的shell。如:#!/bin/bash
shell脚本解释行:以“#”开头。
执行方法:- 加执行权限,再运行脚本 。如:
chmod a+x 1.sh; ./1.sh
- 运行shell加脚本名称 参数。如:
bash 1.sh;
脚本运行过程查看:bash -x 1.sh
脚本语法检查:bash -n 1.sh
- 加执行权限,再运行脚本 。如:
-
时间命令date
在shell中,使用时间命令生成对应时间,或是格式化时间 ,以便于脚本 在需要时,得到确切时间。
时间格式:分为两种,一标以时间戳形式(秒)存在,另一种是时间格式存在,比较随意。
时间戳:date +%s
,转换时间戳为时间格式:date -d @1545661347
时间格式:date +%时间转换符
年:“+%Y” 四位数,“+%y” 两位数。
月:"+%m".
日:"+%d"
小时:"+%M"
分钟:"+%H"
秒:"+%S"
其它格式:"+%D"--12/24/18."+%F"--2018-12-24."+%T"--22:30:10.
周几:"+%w"。 本年中第几周:"+%W"。
时间格式聚合:如:date "+%Y-%m-%d %M:%H:%S"
时间计算:
一天前后:date -d "+1day" +%F;date -d "-1day" +%F
一月前:date -d "-1month"
. 分钟:“-1 min”等。 -
变量定义
变量使用意义:缩写字符串,定义特定属性,特定值,定义特定命令结果等。
变量的作用域:条件语句,只在语句范围,如IF语句。
变量定义特定值:PI=3.14
变量定义命令结果:如m= wc -l 1.txt
变量定义特定属性,如用户交互:read -p "input a num:" n; echo $n
环境变量,预定义环境变量等 。
位置变量: 脚本 传递参数等。如$0
表示脚本 ,$n
表示第n个参数。$#
表示参数个数
数字运算:a=1;b=2;c=$(($a+$b))
,或$[$a+$b]
-
逻辑判断if
if语句常和test判断条件一起,进行逻辑判断。
if语句格式:- if test ; then 语句; fi
- if test ; then 语句; else 语句 ; fi
- if test; then 语句; elif test ; else 语句; fi
-
test判断条件分为:
-
- 数值判断
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
因为“>,<”号已经被 输入输出重定向占用了,所以数值判断 符号不能使用它们。
- 数值判断
- 字符串判断
= 字符串相等为真
!= 字符串不相等为真
-z 字符串 字符串长度为零则为真
-n 字符串 字符串长度不为零则为真 - 文件对象判断
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真 - 逻辑条件组合判断
shell 也提供了 与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。
-
转载于:https://blog.51cto.com/sincethen/2334834