1 shell编程用途
通过终端编写脚本程序,辅助开发人员完成工程自动化操作
2 编写规范
- 脚本程序是Unix/Linux系统中的特殊文件,需要妥善管理
- 放在指定路径的scripts/目录下
- 后缀名统一使用.sh
- 第一行代码 #!/bin/bash 指定程序执行
3 执行方式
- 通过命令执行bash 文件名
- sh 文件名
- ./文件名
4 注释
- 除第一行的#!/bin/bash,单行注释以 # 开头
- 多行注释(多行注释方法较多,这里只是其中一种):<<自定义字符 注释内容 自定义字符
5 标准输出
- 打印完换行echo “要打印的信息”
- echo -n “要打印的信息”
6 标准输入
- 显示输入信息:read -p “提示信息”
- read -s “提示信息”
7 变量
- 命名规则遵循变量命名规则(见名知义、字母数字下划线组成、数字不能开头)
- 变量名=值
# 可以用双引号也可以不用双引号name=Jack
- 使用变量在变量名前面添加 $ 符号 \”
- 与其他字符串拼接使用 ${name}_001
echo \"name:$nameecho \"${name}_001\"
- 引号双引号-强引用:输出赋值
- 单引号-弱引用:不输出赋值
8 选择结构
8.1 单分支结构
- 判断表达式中符号的两端或**[ ]内两端**要有空格,赋值没有空格
if 条件then条件为True执行的代码fi
8.2 双分支结构
if [ 条件1 ];then条件1为True执行的代码else条件不满足执行代码fi
8.3 多分支结构
if [ 条件1 ];then条件1为True执行的代码elif [ 条件2 ];then条件2为True执行的代码elif ....else任何条件都不满足执行的代码fi
8.3 判断符号
8.3.1 文件判断
- 判断文件是否存在 if [ -e 文件路径 ]
- 判断是否文件 if [ -f 文件路径 ]
- 判断是否文件夹 if [ -d 文件路径 ]
- 判断文件是否可读 if [ -r 文件路径 ]
- 判断文件是否可写 if [ -d 文件路径 ]
- 判断文件是否可执行 if [ -x 文件路径 ]
8.3.2 字符串判断
- 判断两个字符是否相等 if [ s1 = s2 ]
- 判断两个字符是否不相等 if [ s1 != s2 ]
- 判断字符串长度是否为0 if [ -z s ]
- 判断字符串是否为空 if [ -n s ]
8.3.3 整数判断
- 判断是否相等 [ num1 -eq num2 ]
- 判断是否不相等 [ num1 -eq num2 ]
- 判断是否大于 [ num1 -eq num2 ]
- 判断是否小于 [ num1 -eq num2 ]
- 判断是否大于等于 [ num1 -eq num2 ]
- 判断是否小于等于 [ num1 -eq num2 ]
8.3.4 逻辑判断
- 并且关系 [ a && b ] 或 [ a -a b ]
- 或者关系 [ a || b ] 或 [ a -o b ]
- 取反 [ ! a ]
8.4 case流程控制
case 变量 in变量1)代码1;;变量2)代码2;;*)全部都没有匹配成功的代码;;esac
9 循环结构
9.1 for循环
for 临时变量 in (数据组)do循环执行代码done
9.2 while循环
while 条件do循环执行的代码done
10 整数运算
- 运算符号求和 num1 + num2
- 求差 num1 – num2
- 求积 num1 * num2 或 num1 * num2
- 求商 num1 / num2
- 取余 num1 % num2
- expr 表达式
expr num1+num1+num1+num2 # 操作符号两边不加空格是拼接
expr $num1 + $num2 # 相加(其他运算同理)
expr $num1 \\ $num2* # expr乘法运算*不能直接使用,否则会报错,需要转义后才能相乘
- res=$[num1+num2]
let i++let num+=1
11 函数
11.1 函数声明
- 标准语法
function 函数名称(){函数中的代码}
- 简洁方式
函数名称(){函数中的代码}
- shell中函数参数传递有自己的方式,不要在括号内添加形式参数
11.2 函数调用
- 直接使用函数名称调用,后面不需要加()
11.3 函数传递
- 参数不需要在函数内声明,直接通过函数获取
- 调用函数的同时传递参数,参数直接放在函数名称后面,用空格分隔
函数名 参数1 参数2 参数3
11.4 函数返回值
- $* 获取所有的参数
- $@ 获取所有的参数
- $# 获取参数的个数
- $n 获取第n个参数
- $? 获取上一个命令或五福执行结果,返回0,执行正常或服务运行中,返回1,执行不正常,返回3,服务已停止;返回4,服务不存在
12 命令替换
先完成 “ 里面的命令行,然后将其结果替换出来
`pwd`