shell: better support of [[ ]] bashism
Still rather rudimentary for ash function old new delta binop 433 589 +156 check_operator 65 101 +36 done_word 736 769 +33 test_main 405 418 +13 parse_stream 2227 2238 +11 ops_texts 124 133 +9 ops_table 80 86 +6 run_pipe 1557 1562 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 8/0 up/down: 269/0) Total: 269 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
6
shell/hush_test/hush-test2/andor1.right
Normal file
6
shell/hush_test/hush-test2/andor1.right
Normal file
@@ -0,0 +1,6 @@
|
||||
1:YES
|
||||
2:no
|
||||
3:YES
|
||||
4:YES
|
||||
5:no
|
||||
6:no
|
7
shell/hush_test/hush-test2/andor1.tests
Executable file
7
shell/hush_test/hush-test2/andor1.tests
Executable file
@@ -0,0 +1,7 @@
|
||||
e=''
|
||||
[[ a && b ]] && echo 1:YES
|
||||
[[ a && '' ]] || echo 2:no
|
||||
[[ a || b ]] && echo 3:YES
|
||||
[[ '' || b ]] && echo 4:YES
|
||||
[[ "" || "$e" ]] || echo 5:no
|
||||
[[ "" || $e ]] || echo 6:no
|
2
shell/hush_test/hush-test2/noglob1.right
Normal file
2
shell/hush_test/hush-test2/noglob1.right
Normal file
@@ -0,0 +1,2 @@
|
||||
1:YES:0
|
||||
2:YES:0
|
3
shell/hush_test/hush-test2/noglob1.tests
Executable file
3
shell/hush_test/hush-test2/noglob1.tests
Executable file
@@ -0,0 +1,3 @@
|
||||
v='*.tests'
|
||||
[[ *.tests ]]; echo 1:YES:$?
|
||||
[[ $v ]]; echo 2:YES:$?
|
8
shell/hush_test/hush-test2/strops1.right
Normal file
8
shell/hush_test/hush-test2/strops1.right
Normal file
@@ -0,0 +1,8 @@
|
||||
1:YES:0
|
||||
2:YES:0
|
||||
3:YES:0
|
||||
4:YES:0
|
||||
5:YES:0
|
||||
6:YES:0
|
||||
7:YES:0
|
||||
8:no:1
|
15
shell/hush_test/hush-test2/strops1.tests
Executable file
15
shell/hush_test/hush-test2/strops1.tests
Executable file
@@ -0,0 +1,15 @@
|
||||
v='*.z'
|
||||
[[ a.z = *.z ]]; echo 1:YES:$?
|
||||
[[ a.z == $v ]]; echo 2:YES:$?
|
||||
|
||||
# wildcards can match a slash
|
||||
[[ a/b = a*b ]]; echo 3:YES:$?
|
||||
[[ a/b == a?b ]]; echo 4:YES:$?
|
||||
|
||||
# wildcards can match a leading dot
|
||||
[[ a/.b = a/*b ]]; echo 5:YES:$?
|
||||
[[ a/.b == a/?b ]]; echo 6:YES:$?
|
||||
|
||||
# wildcards can be escaped
|
||||
[[ abc = a*c ]]; echo 7:YES:$?
|
||||
[[ abc == a\*c ]]; echo 8:no:$?
|
6
shell/hush_test/hush-test2/strops2.right
Normal file
6
shell/hush_test/hush-test2/strops2.right
Normal file
@@ -0,0 +1,6 @@
|
||||
1:ERR2:2
|
||||
2:YES:0
|
||||
3:YES:0
|
||||
4:YES:0
|
||||
5:no:1
|
||||
6:YES:0
|
12
shell/hush_test/hush-test2/strops2.tests
Executable file
12
shell/hush_test/hush-test2/strops2.tests
Executable file
@@ -0,0 +1,12 @@
|
||||
# malformed regex
|
||||
[[ a =~ * ]]; echo 1:ERR2:$?
|
||||
|
||||
[[ a/b =~ a.b ]]; echo 2:YES:$?
|
||||
[[ a/b =~ /*b ]]; echo 3:YES:$?
|
||||
|
||||
v='[]b.-]'
|
||||
[[ a/.b] =~ $v ]]; echo 4:YES:$?
|
||||
|
||||
v=']b.-'
|
||||
[[ a/.b] =~ $v ]]; echo 5:no:$?
|
||||
[[ a/.b] =~ [$v] ]]; echo 6:YES:$?
|
7
shell/hush_test/hush-test2/strops3.right
Normal file
7
shell/hush_test/hush-test2/strops3.right
Normal file
@@ -0,0 +1,7 @@
|
||||
1:YES:0
|
||||
2:YES:0
|
||||
3:no:1
|
||||
4:YES:0
|
||||
2u:YES:0
|
||||
3u:YES:0
|
||||
4u:YES:0
|
13
shell/hush_test/hush-test2/strops3.tests
Executable file
13
shell/hush_test/hush-test2/strops3.tests
Executable file
@@ -0,0 +1,13 @@
|
||||
# regex should accept '+' operator
|
||||
[[ abcdef =~ a[b-z]+ ]]; echo 1:YES:$?
|
||||
|
||||
# newline matches by "match any" patterns
|
||||
v='
|
||||
'
|
||||
[[ "$v" =~ . ]]; echo 2:YES:$?
|
||||
[[ "$v" =~ "[$v]" ]]; echo 3:no:$? # hmm bash does return 1... why?
|
||||
[[ "$v" =~ [^a] ]]; echo 4:YES:$?
|
||||
# should work even without quotes:
|
||||
[[ $v =~ . ]]; echo 2u:YES:$?
|
||||
[[ $v =~ [$v] ]]; echo 3u:YES:$?
|
||||
[[ $v =~ [^a] ]]; echo 4u:YES:$?
|
Reference in New Issue
Block a user