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