1, 字符串截取
${变量名称:截取位置:截取长度}
a=abcdefg
echo ${a:5:2} //从变量的第6位截取,截取2位
echo ${a:3:3} //从变量的第4位截取,截取3位
echo ${a:0:3} //从变量的第1位截取,截取3位
echo ${a::3} //上述的精简写法
编写脚本,可以生成8位随机字符
#!/bin/bash
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
for i in {1..8} //循环8次
do
n=$[RANDOM%62] //得到0~61随机数存在变量n中
k=${x:n:1} //使用字符串截取得到1个随机字符,存在变量k中
a=$k$a //不断往变量a中追加
done
echo $a //喊出最终结果,是一个8位长度的随机字符,可以用作密码
2, 字符串替换
${变量名称/旧/新}
[root@svr7 opt]# a=12345
[root@svr7 opt]# echo ${a/4/6}
12365
[root@svr7 opt]# a=1122334455
[root@svr7 opt]# echo ${a/4/6}
1122336455
[root@svr7 opt]# echo ${a//4/6} //替换所有!
1122336655
3, 字符串删除
${变量名称#要删除的内容} 即从左往右删除 (掐头)
${变量名称%要删除的内容} 即从右往左删除 (去尾)
a=abcdefghijkl //定义变量作为素材
echo ${a#abcdefghij} //从左往右删除,只留下kl
echo ${a#*j} //精简写法,效果同上
echo ${a#def} //无法从中间删除
a=abcdefghijkl
echo ${a%defghijkl} //从右往左删除,只留下abc
echo ${a%d*} //精简写法,效果同上
a=abcdabcd
echo ${a#*c} //从左往右删除到第1个c
echo ${a##*c} //从左往右删除到最后1个c
a=abcdabcd
echo ${a%c*} //从右往左删除到第1个c
echo ${a%%c*} //从右往左删除到最后1个c
4,定义变量初值(备用值)
${变量名:-初值}
#!/bin/bash
read -p '请输入用户名:' u
[ -z $u ] && echo "创建用户前必须输入用户名!" && exit
useradd $u
stty -echo
read -p '请输入密码(默认123456):' p
stty echo
echo ${p:-123456} | passwd --stdin $u