假設有變量var=http://www.itecs.cn/index.html
1.#字號截取(從左邊開始截,刪除左邊字符,保留右邊字符)
# echo ${var#*//}
www.itecs.cn/index.html
${} -> ${var} -> ${var#//} -> ${var#*//}
#//表示從左邊開始截,截取到第一次出現//處,(#*//中的*表示)然后把左邊的字符扔掉,得到//右邊的字符。
2.##(雙#號)截取
# echo ${var##*/}
index.html
##/表示從左邊開始截,截取到最后一次出現/處,(##*/中的*表示)然后把左邊的字符扔掉,得到/右邊的字符。
3.%(百分號)截取(從右邊開始截,刪除右邊字符,保留左邊字符)
# echo ${var%:*}
http
%:表示從右邊開始截,截取到第一次出現:(冒號)處,(%:*中的*表示)然后把右邊的字符扔掉,得到冒號左邊的字符。
4.%%(雙%號)截取
# echo ${var%%/*}
http:
%%/表示從右邊開始截,截取到最后一次出現/處,(%%/*中的*表示)然后把右邊的字符扔掉,得到/左邊的字符。
5.截取指定位置的字符
# ls -l /etc/dhcp/dhcpd.conf
-rw-r--r--. 1 root root 352 Sep 21 23:12 /etc/dhcp/dhcpd.conf
# str=`ls -l /etc/dhcp/dhcpd.conf`
# firstchar=${str:0:1}
# echo $firstchar
練習:
# ABC=user10
(1)得到變量值后面的數字
# echo ${ABC##*[a-z]}
# echo ${ABC##*[a-z,A-Z]}
# echo ${ABC##*[[:alpha:]]}
(2)得到變量值前面的字母(即去掉數字后的部分)
# echo ${ABC%%[0-9]*}
# echo ${ABC%%[[:digit:]]*}