脚本实现
创建脚本
1.创建文本文件 注意:文本文件必须有执行权限
如何修改权限
2.脚本内容第一行添加shebang机制 如:#!/bin/bash
3.执行脚本方法
使用bash执行 注意$PATH中必须有该文件明确的路径
绝对路径执行 写出文件具体路径即可
相对路径执行 切换到脚本目录当中 写出文件相对路径即可
调试脚本
1.只检查脚本语法是否错误 bash -n 检测语法错误
2.调试并执行 bash -x 检测命令错误或逻辑错误
变量
1.变量类型
内置变量
用户自定变量
2.以变量的生效范围划分变量类型及之间的区别
普通变量
环境变量
本地变量
3.三种常见的变量赋值
4.set显示已设置的变量 unset删除变量
环境变量
1.声明环境变量 export | declare -x
2.变量引用
3.显示所有环境变量
只读变量
1.声明只读变量 readonly | declare -r
2.查看只读变量
位置变量
$0
$1 $2
$*和$@的区别 注意:$*和$@只有在被双引号包起来的时候才会有差异
$#
2.清空所有位置变量 set --
退出状态码
$?保存状态码的相关数字 取值范围:0-255
0
1-255
展开命令行
1.防止扩展 \
加引号来防止扩展 单引号 ' ' 和双引号 " "的区别
2.变量扩展
` ` \ !
脚本安全和set
1.$-变量
h i m b h s各代表的意思
2.set命令实现脚本安全
格式化输出printf
1.常用格式替换符
%s %d %f %o %o %x %X %c %%
%-10s -表示左对齐 10表示10个字符宽
%.2f 表示小数点后显示的小数位数
2.常用转义字符
\n \r \t \v
运算
1.实现运算方法
let ...=算术表达式 ((..=算术表达式)) $(算数表达式) $[算数表达式] $((算术表达式))
2.随机数生成器变量 $RANDOM
逻辑运算
& | ! ^
短路运算
1.短路与 && 第一个为真才会判断第二个是否为真
2.短路或 | | 第一个为假才会对第二个进行判断
3.相组和 CMD1 && CMD2 | | CMD3 注:进行组合必须为该逻辑顺序
第一个为真则判断第二个 第一个为假判断第三个
条件测试命令
1.条件命令测试条件
test ..... [....] [[ .... ]]
数值测试
-eq -ne -gt -ge -lt -le 各代表的含义
== != > >= < <=
字符串测试
字符串是否为空 -z STRING 字符串是否不空 -n STRING
=~ 左侧字符串是否能够被右侧的PATTERN匹配
文件测试
1. 存在性测试
-e -b -c -d -f -p -s -l
2.文件属性测试
-s是否存在且非空 -t fd 是否在终端打开 fd命令可以将后台命令转为前台工作 -N 上一次被读取之后是否被修改过 -O 有效用户是否为文件属主 -G 有效用户是否为属组 -ef 前文件是否是后文件的硬链接 -nt 前文件是否新于旧文件 -ot 前文件是否旧于后文件
关于()和{}
(list )会开启子shell,不再影响后续的环境
{ list } 不会启子shell,会影响当前shell环境
read接受输入
流程控制
条件选择
1.if选择结构
if [ command ];then .... fi
if [ command ];then .... elif [ ]; then.... else ... fi
2.case语句
case 变量引用 in
PAT1) 分支1 ;;
PAT2) 分支2 ;;
*) 默认分支;;
esac
循环
1.循环for
for ... in ... ;do
循环体
done
2.循环while
while ...; do
循环体
done
3.循环until
untile ...;do
循环体
done
注意:while循环和until循环区别:while进入循环,条件是真 until进入循环,条件是假
循环控制语句
1.break
2.continue
注:break和continue的区别 break是跳出整个循环(即对外层循环有影响,能够结束外层循环)
continue仅影响内层循环 (不会终止外层循环,仅终止当前外层循环)
3.shift