update var_bash4 test. one more bug revealed by it now...
No binary (build failed)
—
(log yok)
| @@ -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 | |
| @@ -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: $? | |