shell: add comments about [[, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4709df0f15
commit
3632cb15f1
3 changed files with 30 additions and 1 deletions
|
@ -313,6 +313,9 @@ static const struct operator_t ops_table[] = {
|
||||||
{ /* "-L" */ FILSYM , UNOP },
|
{ /* "-L" */ FILSYM , UNOP },
|
||||||
{ /* "-S" */ FILSOCK , UNOP },
|
{ /* "-S" */ FILSOCK , UNOP },
|
||||||
{ /* "=" */ STREQ , BINOP },
|
{ /* "=" */ STREQ , BINOP },
|
||||||
|
/* "==" is bashism, http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
|
||||||
|
* lists only "=" as comparison operator.
|
||||||
|
*/
|
||||||
{ /* "==" */ STREQ , BINOP },
|
{ /* "==" */ STREQ , BINOP },
|
||||||
{ /* "!=" */ STRNE , BINOP },
|
{ /* "!=" */ STRNE , BINOP },
|
||||||
{ /* "<" */ STRLT , BINOP },
|
{ /* "<" */ STRLT , BINOP },
|
||||||
|
@ -357,6 +360,7 @@ static const char ops_texts[] ALIGN1 =
|
||||||
"-L" "\0"
|
"-L" "\0"
|
||||||
"-S" "\0"
|
"-S" "\0"
|
||||||
"=" "\0"
|
"=" "\0"
|
||||||
|
/* "==" is bashism */
|
||||||
"==" "\0"
|
"==" "\0"
|
||||||
"!=" "\0"
|
"!=" "\0"
|
||||||
"<" "\0"
|
"<" "\0"
|
||||||
|
|
15
shell/ash.c
15
shell/ash.c
|
@ -197,7 +197,20 @@
|
||||||
#define IF_BASH_PATTERN_SUBST IF_ASH_BASH_COMPAT
|
#define IF_BASH_PATTERN_SUBST IF_ASH_BASH_COMPAT
|
||||||
#define BASH_SUBSTR ENABLE_ASH_BASH_COMPAT
|
#define BASH_SUBSTR ENABLE_ASH_BASH_COMPAT
|
||||||
#define IF_BASH_SUBSTR IF_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_TEST2 (ENABLE_ASH_BASH_COMPAT * ENABLE_ASH_TEST)
|
||||||
#define BASH_SOURCE ENABLE_ASH_BASH_COMPAT
|
#define BASH_SOURCE ENABLE_ASH_BASH_COMPAT
|
||||||
#define BASH_PIPEFAIL ENABLE_ASH_BASH_COMPAT
|
#define BASH_PIPEFAIL ENABLE_ASH_BASH_COMPAT
|
||||||
|
|
12
shell/hush.c
12
shell/hush.c
|
@ -79,6 +79,18 @@
|
||||||
* Some builtins mandated by standards:
|
* Some builtins mandated by standards:
|
||||||
* newgrp [GRP]: not a builtin in bash but a suid binary
|
* newgrp [GRP]: not a builtin in bash but a suid binary
|
||||||
* which spawns a new shell with new group ID
|
* 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:config HUSH
|
||||||
//config: bool "hush (64 kb)"
|
//config: bool "hush (64 kb)"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue