summaryrefslogtreecommitdiffstats
path: root/tests/new-exp16.sub
blob: 2ed751d34ce48e81df2037ad45eee64f0927409a (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

HOME=/homes/chet
string=abcdefg
set -- a b c

shopt -u patsub_replacement

# verify existing behavior
echo ${string/abc/~}
echo "${string/abc/~}"
echo ${string/abc/"~"}

echo ${string/abc/$notthere}
echo "${string/abc/$notthere}"
echo "${string/abc/"$notthere"}"

echo ${string//?/\$\'&\' } 

shopt -s patsub_replacement

echo ${string//?/\$\'&\' } 

echo ${string//?/& } 
echo "${string//?/& }"

echo ${string//?/\& } 
echo "${string//?/\& }"
echo ${string//?/"& "}
echo ${string//?/"\& "}

echo "${string//?/"a "}"
echo "${string//?/"$# "}"

echo ${string/abc/& }
echo "${string/abc/& }"
echo ${string/abc/"& "}

echo ${string/abc/\& }
echo "${string/abc/\& }"
echo ${string/abc/"\& "}
echo ${string/abc/\\& }

rep='\\&'

echo "${string/abc/&}"
echo ${string/abc/\&}
echo "${string/abc/\\&}"
echo ${string/abc/"\\&"}
echo "${string/abc/"\\&"}"
echo ${string/abc/$rep}
echo ${string/abc/"$rep"}

shopt -u patsub_replacement

echo "${string/abc/&}"
echo ${string/abc/\&}
echo "${string/abc/\\&}"
echo "${string/abc/"\\&"}"
echo ${string/abc/"$rep"}

shopt -s patsub_replacement

repl='x&y'
r2='x\&y'
var='letssee'

pat=ss

echo ${var//$pat/"$repl"}
echo "${var//$pat/"$repl"}"
echo ${var//$pat/$repl}
echo "${var//$pat/$repl}"

echo ${var//$pat/"$r2"}
echo "${var//$pat/"$r2"}"
echo ${var//$pat/$r2}
echo "${var//$pat/$r2}"

r2='\\&'
r3='\&'

echo ${var//$pat/\\\&}
echo ${var//$pat/\\$r2}
echo ${var//$pat/\\&}
echo ${var//$pat/$r2}

echo ${var//$pat/"\&"}
echo ${var//$pat/"$r3"}
echo ${var//$pat/"&"}
echo ${var//$pat/$r3}

# these cases provide the same functionality as sed when given a BRE like
# `^' or `$', or when passed a null input line
one=one
null=

echo ${one/#/&two}
echo ${one/#/\&two}

echo ${one/%/&two}
echo ${one/%/\&two}

echo ${null/#/&two}
echo ${null/#/\&two}

echo ${one/#?/&two}
echo ${one/#?/\&two}