假设有变量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:]]*}