shell参数扩展
shell parameter expansion
设置默认变量值(变量未赋值/为空时)
1
2
3{var:-default}
{var:=default}
{var=default}如果变量未定义,给出message
1
{var?message}
按照index进行截取
1
2
3
4
5
6{var:index:length}
eg:
a="beautiful world"
echo ${a:2} #autiful world
echo ${a:2:4} #auti按照匹配字符截取
1
2
3
4
5
6
7
8
9
10
11{var#*pattern} #-->非贪婪
{var##*pattern} #-->贪婪
{var%pattern*} #<--非贪婪
{var%%pattern*} #<--贪婪
eg:
a="beautiful world"
echo ${a#*l} #world
echo ${a##*l} #d
echo ${a%l*} #beautiful wor
echo ${a%%l*} #beautifu变量长度
1
{#var}
打印所有以pre开头的变量
1
{!pre*}
替换
1
2
3
4
5
6
7
8
9
10
11{var/search/replace} #替换第一个
{var//search/replace} #替换全部
{var/#search/replace} #只替换开头匹配到的
{var/%search/replace} #只替换结尾匹配到的
eg:
a="beautiful world"
echo ${a/l/AA} #beautifuAA world
echo ${a//l/AA} #beautifuAA worAAd
echo ${a/#be/AA} #AAautiful world
echo ${a/%ld/AA} #beautiful world