一、函数
- 作用:将公共的语句块封装在一起,实现脚本的精简化,方便后期调用
- 格式
函数名(){
指令序列
......
}
调用方法:直接写函数名即可调用
二、字符串的处理
2.1 子串截取
格式:${变量名:起始位置:长度}
注意:其实位置从0开始;起始位置不写的话默认为0
2.2 子串替换
- 格式
-
替换出现的第一个:${变量/旧/新}
-
替换所有出现的:${变量//旧/新}
注意:这里的新可以不写,如果不写的话,就相当于空,等同与删除的效果
-
2.3 子串的删除(删两头)
- 掐头(从左往右删)
-
直接掐:${变量#要删除的子串}
-
最短匹配删除:${变量#*关键词}
也就是从左往右删,删到第一个和关键词匹配的地方
-
最长匹配删除:${变量##*关键词}
也就是从左往右删,删到最后一个和关键词匹配的地方
-
- 去尾(从右往左删)
-
直接去尾:${变量%关键词}
-
最短匹配去尾:${变量%关键词*}
-
最长匹配去尾:${变量%%关键词*}
-
2.4 给变量赋初值
格式:${var:-str}
注意:若变量var有值,则返回变量var的值,否则返回str的值
三、综合案例
- 编写一个脚本,可以创建新用户,并随机配置8位密码(密码由字母大小写和数字随机组成)
#!/bin/bash
_pwd=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 #存放密码的库
pwd="" #最终的八位密码
# 先编写生成8位随机密码的函数
password(){
for i in {1..8}
do
n=$[RANDOM%62] #得到0-61中的随机数
pwd_1=${_pwd:n:1}
pwd=$pwd$pwd_1 #两个变量可以直接拼接在一起
done
}
password #调用函数,生成八位密码
useradd $1
echo $pwd | passwd --stdin $1
脚本运行结果如下:
- 案例升级
需要一次创建多个用户
#!/bin/bash
_pwd=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 #存放密码的库
pwd="" #最终的八位密码
# 先编写生成8位随机密码的函数
password(){
for i in {1..8}
do
n=$[RANDOM%62] #得到0-61中的随机数
pwd_1=${_pwd:n:1}
pwd=$pwd$pwd_1 #两个变量可以直接拼接在一起
done
}
for i in $* #遍历所有的位置参数
do
password #调用函数,生成八位密码
useradd $1
echo $pwd | passwd --stdin $1
shift #将位置参数左移一下
done
脚本运行结果如下: