目录
字符串处理
1. 字符串的截取
格式
${变量名称:截取位置:截取长度}
截取的实例
定义变量 a=abcd
- 从第二位截取两位
[root@localtion]# echo ${a:1:2}
- 从头截取两位
[root@localtion]# echo ${a:0:2}
2. 字符串替换
格式
${变量名/旧/新}
替换的实例
定义变量 a=1234
- 将1个字符2换成6
[root@localtion]# echo ${a/2/6}
定义变量 a=112233
- 将1个字符2换成6
[root@localtion]# echo ${a/2/6}
- 将所有字符2换成6
[root@localtion]# echo ${a//2/6}
定义变量 a=1122233
- 换2个
[root@localtion]# echo ${a/22/66}
- 将11替换成空,相当于删除
[root@localtion]# echo ${a/11/}
3. 字符串的删除
格式
掐头
${变量名#要删除的内容}
去尾
${变量名%要删除的内容}
删除的实例
定义变量 a=abcdef
- 掐头,删除到abc
echo ${a#abc}
- 去尾,删除到def
echo ${a%def}
- 掐头,删除到abcde
echo ${a#abcde}
定义变量 a=abcdefghijk
- 掐头,删除到i
echo ${a#abcdefghi}
- 效果同上,精简写法
echo ${a#*i}
- 去尾,删除到d
echo ${a%defghijk}
- 效果同上,精简写法
echo ${a%d*}
综合案例
案例1:编写脚本,可以生成8位随机字符用作密码
代码实现
#!/bin/bash
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
for i in {1..8}
do
n=$[RANDOM%62] //得到0~61随机数存在变量n中
a=${x:n:1} //截取到1个随机字符,存在变量a中
c=$a$c //不断往c中追加,此时c相当于一个袋子
done
echo $c //最后喊出,得到8位长度随机字符串
案例2:编写脚本,可以批量修改扩展名
代码实现
可以先用touch abc{01..10}.txt
创建10个文件作为素材
#!/bin/bash
for i in $(ls *.txt) //找到所有的txt文件交给for循环
do
n=${i%.*} //用去尾的方法删除扩展名
mv $i $n.doc //再将源文件扩展名修改为doc
done