shell: add comments about [[, no code changes
No binary (build failed)
—
(log yok)
| @@ -313,6 +313,9 @@ static const struct operator_t ops_table[] = { | |
| { /* "-L" */ FILSYM , UNOP }, | |
| { /* "-S" */ FILSOCK , UNOP }, | |
| { /* "=" */ STREQ , BINOP }, | |
| + | /* "==" is bashism, http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html |
| + | * lists only "=" as comparison operator. |
| + | */ |
| { /* "==" */ STREQ , BINOP }, | |
| { /* "!=" */ STRNE , BINOP }, | |
| { /* "<" */ STRLT , BINOP }, | |
| @@ -357,6 +360,7 @@ static const char ops_texts[] ALIGN1 = | |
| "-L" "\0" | |
| "-S" "\0" | |
| "=" "\0" | |
| + | /* "==" is bashism */ |
| "==" "\0" | |
| "!=" "\0" | |
| "<" "\0" | |
| @@ -197,7 +197,20 @@ | |
| #define IF_BASH_PATTERN_SUBST IF_ASH_BASH_COMPAT | |
| #define BASH_SUBSTR ENABLE_ASH_BASH_COMPAT | |
| #define IF_BASH_SUBSTR IF_ASH_BASH_COMPAT | |
| - | /* [[ EXPR ]] */ |
| + | /* BASH_TEST2: [[ EXPR ]] |
| + | * Status of [[ support: |
| + | * We replace && and || with -a and -o |
| + | * TODO: |
| + | * singleword+noglob expansion: |
| + | * v='a b'; [[ $v = 'a b' ]]; echo 0:$? |
| + | * [[ /bin/* ]]; echo 0:$? |
| + | * -a/-o are not AND/OR ops! (they are just strings) |
| + | * quoting needs to be considered (-f is an operator, "-f" and ""-f are not; etc) |
| + | * = is glob match operator, not equality operator: STR = GLOB |
| + | * (in GLOB, quoting is significant on char-by-char basis: a*cd"*") |
| + | * == same as = |
| + | * add =~ regex match operator: STR =~ REGEX |
| + | */ |
| #define BASH_TEST2 (ENABLE_ASH_BASH_COMPAT * ENABLE_ASH_TEST) | |
| #define BASH_SOURCE ENABLE_ASH_BASH_COMPAT | |
| #define BASH_PIPEFAIL ENABLE_ASH_BASH_COMPAT | |
| @@ -79,6 +79,18 @@ | |
| * Some builtins mandated by standards: | |
| * newgrp [GRP]: not a builtin in bash but a suid binary | |
| * which spawns a new shell with new group ID | |
| + | * |
| + | * Status of [[ support: |
| + | * [[ args ]] are CMD_SINGLEWORD_NOGLOB: |
| + | * v='a b'; [[ $v = 'a b' ]]; echo 0:$? |
| + | * [[ /bin/* ]]; echo 0:$? |
| + | * TODO: |
| + | * &&/|| are AND/OR ops, -a/-o are not |
| + | * quoting needs to be considered (-f is an operator, "-f" and ""-f are not; etc) |
| + | * = is glob match operator, not equality operator: STR = GLOB |
| + | * (in GLOB, quoting is significant on char-by-char basis: a*cd"*") |
| + | * == same as = |
| + | * add =~ regex match operator: STR =~ REGEX |
| */ | |
| //config:config HUSH | |
| //config: bool "hush (64 kb)" | |