1 #!/bin/bash
2
3 ### Remove const suffix
4 v=abcd
5 echo ${v%d} ${v%%cd}
6 # stdout: abc ab
7
8 ### Remove const prefix
9 v=abcd
10 echo ${v#a} ${v##ab}
11 # stdout: bcd cd
12
13 ### Remove const suffix is vectorized on user array
14 a=(1a 2a 3a)
15 argv.py ${a[@]%a}
16 # stdout: ['1', '2', '3']
17 # N-I dash/mksh stdout-json: ""
18
19 ### Remove const suffix is vectorized on $@ array
20 set -- 1a 2a 3a
21 argv.py ${@%a}
22 # stdout: ['1', '2', '3']
23 # N-I dash stdout: ['1a', '2a', '3']
24 # N-I mksh stdout-json: ""
25
26 ### Remove const suffix from undefined
27 echo ${undef%suffix}
28 # stdout:
29
30 ### Remove smallest glob suffix
31 v=aabbccdd
32 echo ${v%c*}
33 # stdout: aabbc
34
35 ### Remove longest glob suffix
36 v=aabbccdd
37 echo ${v%%c*}
38 # stdout: aabb
39
40 ### Remove smallest glob prefix
41 v=aabbccdd
42 echo ${v#*b}
43 # stdout: bccdd
44
45 ### Remove longest glob prefix
46 v=aabbccdd
47 echo ${v##*b}
48 # stdout: ccdd
49