update var_bash4 test. one more bug revealed by it now...

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-08-06 17:21:52 +02:00
parent 95b83ba4f8
commit f56fe82542
2 changed files with 68 additions and 8 deletions

View File

@ -1,4 +1,23 @@
In assignment: a*b-backslashstar-
Unquoted: a*b-backslashstar-
Quoted: a*b-backslashstar-
Source: a*b\*c
Replace str: _\\_\z_
Pattern: single backslash and star: "replace literal star"
In assignment: a_\_z_b\*c
Unquoted: a_\_z_b\*c
Quoted: a_\_\z_b\*c
Pattern: double backslash and star: "replace backslash and everything after it"
In assignment: a*b_\_z_
Unquoted: a*b_\_z_
Quoted: a*b_\_\z_
Source: a\bc
Replace str: _\\_\z_
Pattern: single backslash and b: "replace literal b"
In assignment: a\_\_z_c
Unquoted: a\_\_z_c
Quoted: a\_\_\z_c
Pattern: double backslash and b: "replace backslash and b"
In assignment: a_\_z_c
Unquoted: a_\_z_c
Quoted: a_\_\z_c
Done: 0

View File

@ -1,6 +1,47 @@
FOO='a*b\*c'
BAR=${FOO//\\*/-backslashstar-}
echo In assignment: "$BAR"
echo Unquoted: ${FOO//\\*/-backslashstar-}
echo Quoted: "${FOO//\\*/-backslashstar-}"
# This testcase demonstrates that backslashes are treated differently
# in 1st and 2nd parts of ${var/search/repl}:
# if quoted: "${var/search/repl}", and repl contains \a (a non-special char),
# the backslash in repl stays; if unquoted, backslash: removed
# But search part does not act like that: \a is always converted to just a,
# even in quotes.
#
# bash4 (and probably bash3 too) result: "Quoted:" results are different -
# they have extra backslash before z.
v='a*b\*c'
echo 'Source: ' "$v"
echo 'Replace str: ' '_\\_\z_'
echo 'Pattern: ' 'single backslash and star: "replace literal star"'
r=${v/\*/_\\_\z_}
echo 'In assignment:' "$r"
echo 'Unquoted: ' ${v/\*/_\\_\z_}
echo 'Quoted: ' "${v/\*/_\\_\z_}"
echo 'Pattern: ' 'double backslash and star: "replace backslash and everything after it"'
r=${v/\\*/_\\_\z_}
echo 'In assignment:' "$r"
echo 'Unquoted: ' ${v/\\*/_\\_\z_}
echo 'Quoted: ' "${v/\\*/_\\_\z_}"
echo
v='a\bc'
echo 'Source: ' "$v"
echo 'Replace str: ' '_\\_\z_'
echo 'Pattern: ' 'single backslash and b: "replace literal b"'
r=${v/\b/_\\_\z_}
echo 'In assignment:' "$r"
echo 'Unquoted: ' ${v/\b/_\\_\z_}
echo 'Quoted: ' "${v/\b/_\\_\z_}"
echo 'Pattern: ' 'double backslash and b: "replace backslash and b"'
r=${v/\\b/_\\_\z_}
echo 'In assignment:' "$r"
echo 'Unquoted: ' ${v/\\b/_\\_\z_}
echo 'Quoted: ' "${v/\\b/_\\_\z_}"
echo
echo Done: $?