0%

详解参数扩展

详解参数扩展

${parameter:-word}

1
2
3
4
5
6
7
8
9
[root@vm-101 ~]# unset a
[root@vm-101 ~]# echo ${a:-default}
default
[root@vm-101 ~]# a=''
[root@vm-101 ~]# echo ${a:-default}
default
[root@vm-101 ~]# a=1
[root@vm-101 ~]# echo ${a:-default}
1

${parameter:=word}

1
2
3
4
5
6
7
8
9
10
[root@vm-101 ~]# unset a
[root@vm-101 ~]# echo ${a:=default}
default
[root@vm-101 ~]# echo $a
default
[root@vm-101 ~]# a=1
[root@vm-101 ~]# echo ${a:=default}
1
[root@vm-101 ~]# echo $a
1

${parameter:?word}

1
2
3
4
5
6
7
8
9
[root@vm-101 ~]# unset a
[root@vm-101 ~]# echo ${a:?default}
bash: a: default
[root@vm-101 ~]# a=
[root@vm-101 ~]# echo ${a:?default}
bash: a: default
[root@vm-101 ~]# a=1
[root@vm-101 ~]# echo ${a:?default}
1

${parameter:+word}

1
2
3
4
5
6
7
8
9
10
11
[root@vm-101 ~]# unset a
[root@vm-101 ~]#
[root@vm-101 ~]# echo ${a:+default}

[root@vm-101 ~]# echo $a

[root@vm-101 ~]# a=1
[root@vm-101 ~]# echo ${a:+default}
default
[root@vm-101 ~]# echo $a
1

${parameter:offset}

${parameter:offset:length}

1
2
3
4
5
6
7
8
9
[root@vm-101 ~]# a=123456
[root@vm-101 ~]# echo ${a:3}
456
[root@vm-101 ~]# echo ${a:2:4}
3456
[root@vm-101 ~]# echo ${a:2:2}
34
[root@vm-101 ~]# echo ${a:2:3}
345

${!prefix*}

${!prefix@}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@vm-101 ~]# cat a.sh
#! /bin/bash

a1="aaa1"
a2="aaa2"
a3="aaa3"

b1="bbb1"
b2="bbb2"
b3="bbb3"

cccc1="cccc1"

echo ${!a*}
echo ${!a@}

echo ${!b*}
echo ${!b@}

echo ${!cc*}
echo ${!cc@}


[root@vm-101 ~]# bash a.sh
a1 a2 a3
a1 a2 a3
b1 b2 b3
b1 b2 b3
cccc1
cccc1

${!name[@]}

${!name[*]}

1
2
3
4
5
6
7
8
9
10
[root@vm-101 ~]# list=(11 22 33)
[root@vm-101 ~]# echo ${!list[@]}
0 1 2
[root@vm-101 ~]# list[5]=55
[root@vm-101 ~]# echo ${!list[@]}
0 1 2 5
[root@vm-101 ~]# echo ${!list[*]}
0 1 2 5
[root@vm-101 ~]# echo ${list[@]}
11 22 33 55

${\#parameter}

变量值长度

1
2
3
[root@vm-101 ~]# a=123456
[root@vm-101 ~]# echo ${#a}
6

${parameter#word}

${parameter##word}

1
2
3
4
5
6
7
8
9
[root@vm-101 ~]# a="aaabbbcccddd"
[root@vm-101 ~]# echo ${a#a}
aabbbcccddd
[root@vm-101 ~]# echo ${a##a}
aabbbcccddd
[root@vm-101 ~]# echo ${a#*a}
aabbbcccddd
[root@vm-101 ~]# echo ${a##*a}
bbbcccddd

${parameter%word}

${parameter%%word}

1
2
3
4
5
6
7
8
9
10
11
[root@vm-101 ~]# a="aaabbbcccddd"
[root@vm-101 ~]# echo ${a%b}
aaabbbcccddd
[root@vm-101 ~]# echo ${a%%b}
aaabbbcccddd
[root@vm-101 ~]# echo ${a%%*b}
aaabbbcccddd
[root@vm-101 ~]# echo ${a%%b*}
aaa
[root@vm-101 ~]# echo ${a%b*}
aaabb

${parameter/pattern/string}

1
2
3
[root@vm-101 ~]# a="hello,world"
[root@vm-101 ~]# echo ${a/hel/HEL}
HELlo,world

${parameter^pattern}

${parameter^^pattern}

${parameter,pattern}

${parameter,,pattern}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@vm-101 ~]# a="abCdEfg"
[root@vm-101 ~]# echo ${a^*}
AbCdEfg
[root@vm-101 ~]# echo ${a^^*}
ABCDEFG
[root@vm-101 ~]# echo ${a^^f}
abCdEFg
[root@vm-101 ~]# echo ${a^f}
abCdEfg

[root@vm-101 ~]# a="AbedEfg"
[root@vm-101 ~]# echo ${a,a}
AbedEfg
[root@vm-101 ~]# echo ${a,A}
abedEfg
[root@vm-101 ~]# echo ${a,,A}
abedEfg
[root@vm-101 ~]# echo ${a,,e}
AbedEfg
[root@vm-101 ~]# echo ${a,,E}
Abedefg
[root@vm-101 ~]# echo ${a,*}
abedEfg
[root@vm-101 ~]# echo ${a,,*}
abedefg