blob: c1a32488e1d74d1fc2cad7e26b6d0b04c3604499 (
plain) (
blame)
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
|
substitute() {
input=$1
output=$2
params=("$@")
sedArgs=()
for ((n = 2; n < ${#params[*]}; n += 1)); do
p=${params[$n]}
if test "$p" = "--replace"; then
pattern=${params[$((n + 1))]}
replacement=${params[$((n + 2))]}
n=$((n + 2))
sedArgs=("${sedArgs[@]}" "-e" "s^$pattern^$replacement^g")
fi
if test "$p" = "--subst-var"; then
varName=${params[$((n + 1))]}
n=$((n + 1))
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^${!varName}^g")
fi
if test "$p" = "--subst-var-by"; then
varName=${params[$((n + 1))]}
replacement=${params[$((n + 2))]}
n=$((n + 2))
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^$replacement^g")
fi
done
sed "${sedArgs[@]}" < "$input" > "$output".tmp
if test -x "$output"; then
chmod +x "$output".tmp
fi
mv -f "$output".tmp "$output"
}
substituteInPlace() {
fileName="$1"
shift
substitute "$fileName" "$fileName" "$@"
}
|