SHELL(02)
中断控制
[ break ] 中断
- 跳出当前所在的循环体 , 执行循环体后的语句块
- 可以结束整个循环
[ continue ] 继续
- 跳过循环体内余下的语句 , 重新判断条件以决定是否需要执行下一次循环
- 结束当前循环 , 进入下次循环
[ exit ] 退出
- 退出脚本
- 结束循环以及整个脚本
[ case ]语句
- case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认操作。
#!/bin/bashcase $1 int) #如果$1是t就执行touch任务touch $2;;m) #如果$1是m就执行mkdir任务mkdir $2;;r) #如果$1是r就执行rm任务rm -rf $2;;*) #表其他任意情况echo "请输入t或者m或者r"esac
[ ss ] 检测联网的服务
可以查看系统中启动的端口信息
-
常用选项
[ -n ] ----- 以数字格式显示端口号
[ -t ] ----- 显示TCP连接端口
[ -u ] ----- 显示UDP连接端口
[ -l ] ----- 显示服务器正在监听的端口
[ -p ] ----- 显示监听端口的服务名称是什么
常用 [ -ntulp ]
例子: [ ss -ntulp |grep nginx ] #显示所有的端口 , grep 选出nginx 相关
#[ grep -q nginx ] == [ grep nginx &> /dev/null ]
函数
-
变量中存储的大部分是字符串 , 函数中存储的是命令.
-
在Shell环境中 , 将一些需要重复使用的操作 , 定义为公共语句块 , 称为函数
-
使用函数的好处
- 使脚本代码更简洁 , 增强易读性
- 提高Shell脚本的执行效率
-
服务脚本中的函数应用
- 使用与比较复杂的启动 / 终止控制操作
- 方便在需要时多次调用
函数的定义
function 函数名 {命令序列.. ..}
函数名() {命令序列.. ..}
字符串处理
字符串的截取
-
使用 ${} 表达式
-
${ var : 起始位置 : 长度 }
- 起始位置从 0 开始计数
-
[ a=abcd ]
[ echo ${a:1:2} ] ====> [ bc ]
[ echo ${a:0:2} ] ====> [ ab ] -
[ echo $RANDOM ] 表随机数字
字符串的替换
- 替换为空就是删除
- 只替换第一个匹配结果用 [ ${ 变量名 / old / new } ]
- 替换所有匹配结果用 [ ${ 变量名 // old / new } ]
- [ a=aaaa ]
- [ echo ${a/a/b} ] ====> [ baaa ]
- [ echo ${a//a/b} ] ====> [ bbbb ]
字符串删除
-
只能从两头删 , 掐头去尾
-
从左到右最短匹配删除 [ ${变量名 #* 关键词} ]
[ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7备用值[ echo ${ a #* : } ]备用值2 : 3 : 4 : 5 : 6 : 7[ echo ${ a #* 3 } ]: 4 : 5 : 6 : 7
- 从左到右最长匹配删除 [ ${变量名 ##* 关键词} ]
[ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a ##* : } ]7[ echo ${ a #* 3 } ]: 4 : 5 : 6 : 7
- 从右到左最短匹配删除 [ ${ 变量名 % 关键词 * } ]
[ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a % :* } ]1 : 2 : 3 : 4 : 5 : 6[ echo ${ a % 3* } ]1 : 2 :
- 从右到左最长匹配删除 [ ${ 变量名 %% 关键词 * } ]
[ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a %% :* } ]1 [ echo ${ a %% 3* } ]1 : 2 :
定义初值
- [ ${ 变量名 : -xxx } ] 这里的初值为备用值
- 备用值 : 使变量的内容不为空 , 当NULL时引用备用值
[ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a #* 7 } ]"NULL"[echo ${ a : -1234567 }]1234567