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