shell 脚本编程 函数定义 脚本中断
shell 脚本编程 函数定义 脚本中断
shell函数:
将需要重复使用的操作,定义为公共的语句块,叫函数
语法结构:
格式1:
function 函数名 {
命令序列
...
格式2:
函数() {
命令序列
}
调用函数:
函数名 参数1 参数2 …
//在函数中使用位置变量来调用参数
位置变量:
#sh test.sh 参数1 参数2
#vim test.sh
#!/bin/bash
echo $1
echo $2
$# : 显示一共有多少个参数
[email protected] : 显示返回的参数
$? : 显示返回iude状态码
$$ :显示当前脚本的进程号
查看进程: ps -aux
杀死进程:kill -p PID号
ctrl+z 放入后台
jobs 查看后台
实例:同时创建abc目录且在此目录下创建a.txt文件
# mymk(){
mkdir $1
cd $1
touch $2
}
# mymk abc a.txt
中断与退出:
break:结束整个循环
continue: 结束本次循环
exit :结束整个脚本
实例:输出30以内3的倍数
知识点:数组,continue
#!bin/bash
for i in seq 30
do
[ $[i%3 -ne 0] && continue || echo $i
done
字符串截取:
18301593586
183XXXX3586
字符串截取的三种用法:
- ${变量名:起始位置:长度}
- expr substr “$变量名” 起始位置 长度
- echo “$变量名” | cut -b 起始位置-结束位置
字符串替换两种方法:
1.只替换第一个匹配结果:
${变量名/old/new}
2.替换全部匹配结果:
${变量名//old/new}
字符串掐头去尾:
1.从左往右,最短匹配删除: ${变量名#关键词}
2.从右往左,最长匹配删除: ${变量名##关键词}
3.从右往左,最短匹配删除: ${变量名%关键词}
4.从右往左,最长匹配删除: ${变量名%%关键词}
-
${变量名:起始位置:长度}
注意:起始位置从0开始phone=183015935786
统计字符串的长度:
echo ${#phone}
11
截取前三位:
#echo ${phone:0:3}
//如果是从第一个开始截取,可以省略0不写
#echo ${phon::3} -
expr substr "{}区分开
截取前三位:
#expr substr “$phone” 1 3
183 -
echo “$变量名” | cut -b 起始位置-结束位置
注意:起始编号从1开始,与expr类似截取前三位:
#echo “KaTeX parse error: Expected 'EOF', got '#' at position 53: …截取 截取后六位: #̲echo "phone” | cut -b 6-
//如果截取到最后一位,可忽略不写截取单个第六位字符:
#echo “$phone” | cut -b 6截取多个不连续的字符:用逗号分隔
#echo “$phone” | cut -b 6,9,11
实例:生成一个随机密码
#!/bin/bash
x=1234567890 adwqasdwqQWEQWQWEASDQAFWEASDWAEASD
for i in seq 8
do
num=[x:num:1]
pass=tmp
done
echo $pass