hush: document bugs in [[ =~ ]] comparison

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2020-11-01 18:47:24 +01:00
parent a7c065354f
commit 64981b4c8e
4 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,2 @@
4:no:1
5:YES:0

View File

@ -0,0 +1,10 @@
v='*.z'
# Buggy:
# the problem is that expansion rules of LHS and RHS of ~=
# should not be the same: in RHS, "$v" and "*" should escape metas
# (currently "$v" does not),
# but in LHS, they should _not_ do that
# (currently "*" does). Thus these cases fail:
[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*

View File

@ -0,0 +1,3 @@
1:YES:0
2:no:1
3:YES:0

View File

@ -0,0 +1,13 @@
v='*.z'
[[ a.z = *.z ]]; echo 1:YES:$?
[[ a.z = "*".z ]]; echo 2:no:$?
[[ a.z == $v ]]; echo 3:YES:$?
# Buggy:
# the problem is that expansion rules of LHS and RHS of ~=
# should not be the same: in RHS, "$v" and "*" should escape metas
# (currently "$v" does not),
# but in LHS, they should _not_ do that
# (currently "*" does). Thus these cases fail:
#[[ a.z == "$v" ]]; echo 4:no:$? # BUG: "$v" expands to *.z
#[[ "*".z == ?.z ]]; echo 5:YES:$? # BUG: "*" expands to \*