shell脚本编剧 函数定义 脚本中断
shell函数:
将需要重复使用的操作,定义为公共的语句块,叫函数
语法结构:
格式1:
function 函数名 {
命令序列
……
}
格式2:
函数(){
命令序列
……
}
调用函数:
函数名 参数1 参数2 ...
//在函数中使用位置变量来调用参数
位置变量:
# sh test.sh 参数1 参数2
# vim test.sh
#!/bin/bash
echo $1
echo $2
$# : 显示一共有多少个参数
$@ : 显示所有的参数
$? : 显示返回的状态码
$$ : 显示当前脚本的进程号
查看进程:ps -aux
杀死进程:kill -9 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
字符串截取:
字符截取的三种用法:
1.
变
量
名
:
起
始
位
置
:
长
度
2.
e
x
p
r
s
u
b
s
t
r
“
{变量名:起始位置:长度} 2.expr substr “
变量名:起始位置:长度2.exprsubstr“变量名” 起始位置 长度
3.echo “$变量名” | cut -b 起始位置-结束位置
字符串替换两种方法:
1.只替换第一个匹配结果:
${变量名/old/new}
2.替换全部匹配结果:
${变量名//old/new}
字符串掐头去尾:
1.从左往右,最短匹配删除: ${变量名#*关键词}
2.从左往右,最长匹配删除: ${变量名##*关键词}
3.从右往左,最短匹配删除: ${变量名%关键词}
4.从右往左,最长匹配删除: ${变量名%%关键词}
1.${变量名:起始位置:长度}
注意:起始位置从0开始
# phone=183015935786
统计字符串的长度:
#echo ${#phone}
11
截取前三位:
#echo ${phone:0:3}
//如果是从第一个开始截,可以省略0不写
#echo
[
h
o
n
e
:
:
3
2.
e
x
p
r
s
u
b
s
t
r
“
{[hone::3} 2.expr substr “
[hone::32.exprsubstr“变量名” 起始位置 长度
注意:起始编号从1开始,注意与${ }区分开
截取前三位:
#expr substr “$phone” 1 3
183
3.echo “$变量名” | cut -b 起始位置-结束位置
注意:起始编号从1开始,与expr类似
截取前三位:
#echo“$phone” | cut -b 1-3
//-b选项是按字节截取
截取后六位
#echo“$phone” | cut -b 6-
//如果截取到最后一位,可忽略不写
截取单个第六位的字符:
#echo“$phone” | cut -b 6
截取多个不连续的字符:用逗号分割
#echo“$phone” | cut -b 6,9,11
实例:生成一个随机密码
# vim rand.sh
x=1234567890 adwqasdwqQWEQWQWEASDQAFWEASDWAEASD
for i in seq 8
do
num=
[
R
A
N
D
O
M
t
m
o
=
[RANDOM%62] tmo=
[RANDOMtmo=[x:num:1]
pass=
[
p
a
s
s
]
[pass]
[pass]tmp
done
echo $pass