mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-29 08:29:54 +02:00
commit bash-20190614 snapshot
This commit is contained in:
@@ -6104,3 +6104,29 @@ variables.c
|
||||
<coung.manhle.vn@gmail.com>
|
||||
- initialize_shell_variables: call set_argv0() as part of shell
|
||||
initialization
|
||||
|
||||
6/14
|
||||
----
|
||||
execute_cmd.c
|
||||
- execute_for_command: make sure to call stupidly_hack_special_variables
|
||||
on the index variable each time bind_variable is called on it. If
|
||||
someone does something nonsensical like `for OPTIND in ...' we want
|
||||
the side effects to happen. Reported by Stephane Chazelas
|
||||
<stephane.chazelas@gmail.com>
|
||||
- execute_select_command: do the same thing for the selection variable
|
||||
after calling bind_variable
|
||||
|
||||
6/15
|
||||
----
|
||||
builtins/set.def
|
||||
- unset_builtin: if neither -f nor -v is supplied, and a NAME cannot
|
||||
be a shell variable because it's not a shell identifier, try to
|
||||
unset a shell function whether we're in posix mode or not. Suggested
|
||||
back in 1/2019 by PePa65 <solusos@passchier.net> and Robert Elz
|
||||
<kre@bmunnari.oz.au>
|
||||
|
||||
execute_cmd.c
|
||||
- execute_simple_command: if this is being executed by the command
|
||||
builtin (flags&CMD_COMMAND_BUILTIN), don't bother to print the
|
||||
command words if set -x is enabled. From a report by Martijn Dekker
|
||||
<martijn@inlv.org> back in 4/2018
|
||||
|
||||
+14
-3
@@ -818,7 +818,7 @@ unset_builtin (list)
|
||||
WORD_LIST *list;
|
||||
{
|
||||
int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
|
||||
int global_unset_func, global_unset_var, vflags;
|
||||
int global_unset_func, global_unset_var, vflags, valid_id;
|
||||
char *name, *tname;
|
||||
|
||||
unset_function = unset_variable = unset_array = nameref = any_failed = 0;
|
||||
@@ -884,17 +884,28 @@ unset_builtin (list)
|
||||
#endif
|
||||
/* Get error checking out of the way first. The low-level functions
|
||||
just perform the unset, relying on the caller to verify. */
|
||||
valid_id = legal_identifier (name);
|
||||
|
||||
/* Whether or not we are in posix mode, if neither -f nor -v appears,
|
||||
skip over trying to unset variables with invalid names and just
|
||||
treat them as potential shell function names. */
|
||||
if (global_unset_func == 0 && global_unset_var == 0 && valid_id == 0)
|
||||
{
|
||||
unset_variable = unset_array = 0;
|
||||
unset_function = 1;
|
||||
}
|
||||
|
||||
/* Bash allows functions with names which are not valid identifiers
|
||||
to be created when not in posix mode, so check only when in posix
|
||||
mode when unsetting a function. */
|
||||
if (((unset_function && posixly_correct) || !unset_function) && legal_identifier (name) == 0)
|
||||
if (unset_function == 0 && valid_id == 0)
|
||||
{
|
||||
sh_invalidid (name);
|
||||
NEXT_VARIABLE ();
|
||||
}
|
||||
|
||||
/* Only search for functions here if -f supplied. */
|
||||
/* Search for functions here if -f supplied or if NAME cannot be a
|
||||
variable name. */
|
||||
var = unset_function ? find_function (name)
|
||||
: (nameref ? find_variable_last_nameref (name, 0) : find_variable (name));
|
||||
|
||||
|
||||
+102
-103
@@ -1615,18 +1615,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
|
||||
Return a status of 0 (true) or 1 (false) depending on the evalu-
|
||||
ation of the conditional expression _e_x_p_r. Each operator and op-
|
||||
erand must be a separate argument. Expressions are composed of
|
||||
the primaries described in the bbaasshh manual page under CCOONNDDII--
|
||||
TTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not accept any options, nor does
|
||||
it accept and ignore an argument of ---- as signifying the end of
|
||||
options.
|
||||
the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
|
||||
tteesstt does not accept any options, nor does it accept and ignore
|
||||
an argument of ---- as signifying the end of options.
|
||||
|
||||
Expressions may be combined using the following operators,
|
||||
Expressions may be combined using the following operators,
|
||||
listed in decreasing order of precedence. The evaluation
|
||||
depends on the number of arguments; see below. Operator prece-
|
||||
depends on the number of arguments; see below. Operator prece-
|
||||
dence is used when there are five or more arguments.
|
||||
!! _e_x_p_r True if _e_x_p_r is false.
|
||||
(( _e_x_p_r ))
|
||||
Returns the value of _e_x_p_r. This may be used to override
|
||||
Returns the value of _e_x_p_r. This may be used to override
|
||||
the normal precedence of operators.
|
||||
_e_x_p_r_1 -aa _e_x_p_r_2
|
||||
True if both _e_x_p_r_1 and _e_x_p_r_2 are true.
|
||||
@@ -1643,120 +1642,120 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
|
||||
null.
|
||||
2 arguments
|
||||
If the first argument is !!, the expression is true if and
|
||||
only if the second argument is null. If the first argu-
|
||||
ment is one of the unary conditional operators listed
|
||||
above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
|
||||
only if the second argument is null. If the first argu-
|
||||
ment is one of the unary conditional operators listed
|
||||
above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
|
||||
true if the unary test is true. If the first argument is
|
||||
not a valid unary conditional operator, the expression is
|
||||
false.
|
||||
3 arguments
|
||||
The following conditions are applied in the order listed.
|
||||
If the second argument is one of the binary conditional
|
||||
If the second argument is one of the binary conditional
|
||||
operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the
|
||||
result of the expression is the result of the binary test
|
||||
using the first and third arguments as operands. The --aa
|
||||
and --oo operators are considered binary operators when
|
||||
there are three arguments. If the first argument is !!,
|
||||
the value is the negation of the two-argument test using
|
||||
using the first and third arguments as operands. The --aa
|
||||
and --oo operators are considered binary operators when
|
||||
there are three arguments. If the first argument is !!,
|
||||
the value is the negation of the two-argument test using
|
||||
the second and third arguments. If the first argument is
|
||||
exactly (( and the third argument is exactly )), the result
|
||||
is the one-argument test of the second argument. Other-
|
||||
is the one-argument test of the second argument. Other-
|
||||
wise, the expression is false.
|
||||
4 arguments
|
||||
If the first argument is !!, the result is the negation of
|
||||
the three-argument expression composed of the remaining
|
||||
the three-argument expression composed of the remaining
|
||||
arguments. Otherwise, the expression is parsed and eval-
|
||||
uated according to precedence using the rules listed
|
||||
uated according to precedence using the rules listed
|
||||
above.
|
||||
5 or more arguments
|
||||
The expression is parsed and evaluated according to
|
||||
The expression is parsed and evaluated according to
|
||||
precedence using the rules listed above.
|
||||
|
||||
When used with tteesstt or [[, the << and >> operators sort lexico-
|
||||
When used with tteesstt or [[, the << and >> operators sort lexico-
|
||||
graphically using ASCII ordering.
|
||||
|
||||
ttiimmeess Print the accumulated user and system times for the shell and
|
||||
ttiimmeess Print the accumulated user and system times for the shell and
|
||||
for processes run from the shell. The return status is 0.
|
||||
|
||||
ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...]
|
||||
The command _a_r_g is to be read and executed when the shell
|
||||
receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a
|
||||
single _s_i_g_s_p_e_c) or --, each specified signal is reset to its
|
||||
original disposition (the value it had upon entrance to the
|
||||
shell). If _a_r_g is the null string the signal specified by each
|
||||
_s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes.
|
||||
If _a_r_g is not present and --pp has been supplied, then the trap
|
||||
commands associated with each _s_i_g_s_p_e_c are displayed. If no
|
||||
arguments are supplied or if only --pp is given, ttrraapp prints the
|
||||
list of commands associated with each signal. The --ll option
|
||||
causes the shell to print a list of signal names and their cor-
|
||||
responding numbers. Each _s_i_g_s_p_e_c is either a signal name
|
||||
defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are
|
||||
The command _a_r_g is to be read and executed when the shell
|
||||
receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a
|
||||
single _s_i_g_s_p_e_c) or --, each specified signal is reset to its
|
||||
original disposition (the value it had upon entrance to the
|
||||
shell). If _a_r_g is the null string the signal specified by each
|
||||
_s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes.
|
||||
If _a_r_g is not present and --pp has been supplied, then the trap
|
||||
commands associated with each _s_i_g_s_p_e_c are displayed. If no
|
||||
arguments are supplied or if only --pp is given, ttrraapp prints the
|
||||
list of commands associated with each signal. The --ll option
|
||||
causes the shell to print a list of signal names and their cor-
|
||||
responding numbers. Each _s_i_g_s_p_e_c is either a signal name
|
||||
defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are
|
||||
case insensitive and the SSIIGG prefix is optional.
|
||||
|
||||
If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
|
||||
from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
|
||||
cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
|
||||
_s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
|
||||
first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR
|
||||
above). Refer to the description of the eexxttddeebbuugg option to the
|
||||
If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
|
||||
from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
|
||||
cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
|
||||
_s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
|
||||
first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR
|
||||
above). Refer to the description of the eexxttddeebbuugg option to the
|
||||
sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a
|
||||
_s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell
|
||||
function or a script executed with the .. or ssoouurrccee builtins fin-
|
||||
ishes executing.
|
||||
|
||||
If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
|
||||
If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
|
||||
pipeline (which may consist of a single simple command), a list,
|
||||
or a compound command returns a non-zero exit status, subject to
|
||||
the following conditions. The EERRRR trap is not executed if the
|
||||
the following conditions. The EERRRR trap is not executed if the
|
||||
failed command is part of the command list immediately following
|
||||
a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
|
||||
a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
|
||||
part of a command executed in a &&&& or |||| list except the command
|
||||
following the final &&&& or ||||, any command in a pipeline but the
|
||||
last, or if the command's return value is being inverted using
|
||||
!!. These are the same conditions obeyed by the eerrrreexxiitt (--ee)
|
||||
following the final &&&& or ||||, any command in a pipeline but the
|
||||
last, or if the command's return value is being inverted using
|
||||
!!. These are the same conditions obeyed by the eerrrreexxiitt (--ee)
|
||||
option.
|
||||
|
||||
Signals ignored upon entry to the shell cannot be trapped or
|
||||
reset. Trapped signals that are not being ignored are reset to
|
||||
Signals ignored upon entry to the shell cannot be trapped or
|
||||
reset. Trapped signals that are not being ignored are reset to
|
||||
their original values in a subshell or subshell environment when
|
||||
one is created. The return status is false if any _s_i_g_s_p_e_c is
|
||||
one is created. The return status is false if any _s_i_g_s_p_e_c is
|
||||
invalid; otherwise ttrraapp returns true.
|
||||
|
||||
ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...]
|
||||
With no options, indicate how each _n_a_m_e would be interpreted if
|
||||
With no options, indicate how each _n_a_m_e would be interpreted if
|
||||
used as a command name. If the --tt option is used, ttyyppee prints a
|
||||
string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
|
||||
_f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
|
||||
builtin, or disk file, respectively. If the _n_a_m_e is not found,
|
||||
then nothing is printed, and an exit status of false is
|
||||
returned. If the --pp option is used, ttyyppee either returns the
|
||||
string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
|
||||
_f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
|
||||
builtin, or disk file, respectively. If the _n_a_m_e is not found,
|
||||
then nothing is printed, and an exit status of false is
|
||||
returned. If the --pp option is used, ttyyppee either returns the
|
||||
name of the disk file that would be executed if _n_a_m_e were speci-
|
||||
fied as a command name, or nothing if ``type -t name'' would not
|
||||
return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
|
||||
return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
|
||||
even if ``type -t name'' would not return _f_i_l_e. If a command is
|
||||
hashed, --pp and --PP print the hashed value, which is not necessar-
|
||||
ily the file that appears first in PPAATTHH. If the --aa option is
|
||||
used, ttyyppee prints all of the places that contain an executable
|
||||
ily the file that appears first in PPAATTHH. If the --aa option is
|
||||
used, ttyyppee prints all of the places that contain an executable
|
||||
named _n_a_m_e. This includes aliases and functions, if and only if
|
||||
the --pp option is not also used. The table of hashed commands is
|
||||
not consulted when using --aa. The --ff option suppresses shell
|
||||
not consulted when using --aa. The --ff option suppresses shell
|
||||
function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true
|
||||
if all of the arguments are found, false if any are not found.
|
||||
|
||||
uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]]
|
||||
Provides control over the resources available to the shell and
|
||||
to processes started by it, on systems that allow such control.
|
||||
Provides control over the resources available to the shell and
|
||||
to processes started by it, on systems that allow such control.
|
||||
The --HH and --SS options specify that the hard or soft limit is set
|
||||
for the given resource. A hard limit cannot be increased by a
|
||||
non-root user once it is set; a soft limit may be increased up
|
||||
to the value of the hard limit. If neither --HH nor --SS is speci-
|
||||
for the given resource. A hard limit cannot be increased by a
|
||||
non-root user once it is set; a soft limit may be increased up
|
||||
to the value of the hard limit. If neither --HH nor --SS is speci-
|
||||
fied, both the soft and hard limits are set. The value of _l_i_m_i_t
|
||||
can be a number in the unit specified for the resource or one of
|
||||
the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the
|
||||
current hard limit, the current soft limit, and no limit,
|
||||
respectively. If _l_i_m_i_t is omitted, the current value of the
|
||||
soft limit of the resource is printed, unless the --HH option is
|
||||
current hard limit, the current soft limit, and no limit,
|
||||
respectively. If _l_i_m_i_t is omitted, the current value of the
|
||||
soft limit of the resource is printed, unless the --HH option is
|
||||
given. When more than one resource is specified, the limit name
|
||||
and unit are printed before the value. Other options are inter-
|
||||
preted as follows:
|
||||
@@ -1765,12 +1764,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
|
||||
--cc The maximum size of core files created
|
||||
--dd The maximum size of a process's data segment
|
||||
--ee The maximum scheduling priority ("nice")
|
||||
--ff The maximum size of files written by the shell and its
|
||||
--ff The maximum size of files written by the shell and its
|
||||
children
|
||||
--ii The maximum number of pending signals
|
||||
--kk The maximum number of kqueues that may be allocated
|
||||
--ll The maximum size that may be locked into memory
|
||||
--mm The maximum resident set size (many systems do not honor
|
||||
--mm The maximum resident set size (many systems do not honor
|
||||
this limit)
|
||||
--nn The maximum number of open file descriptors (most systems
|
||||
do not allow this value to be set)
|
||||
@@ -1779,53 +1778,53 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
|
||||
--rr The maximum real-time scheduling priority
|
||||
--ss The maximum stack size
|
||||
--tt The maximum amount of cpu time in seconds
|
||||
--uu The maximum number of processes available to a single
|
||||
--uu The maximum number of processes available to a single
|
||||
user
|
||||
--vv The maximum amount of virtual memory available to the
|
||||
--vv The maximum amount of virtual memory available to the
|
||||
shell and, on some systems, to its children
|
||||
--xx The maximum number of file locks
|
||||
--PP The maximum number of pseudoterminals
|
||||
--TT The maximum number of threads
|
||||
|
||||
If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
|
||||
new value of the specified resource. If no option is given,
|
||||
then --ff is assumed. Values are in 1024-byte increments, except
|
||||
for --tt, which is in seconds; --pp, which is in units of 512-byte
|
||||
blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values;
|
||||
If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
|
||||
new value of the specified resource. If no option is given,
|
||||
then --ff is assumed. Values are in 1024-byte increments, except
|
||||
for --tt, which is in seconds; --pp, which is in units of 512-byte
|
||||
blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values;
|
||||
and, when in posix mode, --cc and --ff, which are in 512-byte incre-
|
||||
ments. The return status is 0 unless an invalid option or argu-
|
||||
ment is supplied, or an error occurs while setting a new limit.
|
||||
|
||||
uummaasskk [--pp] [--SS] [_m_o_d_e]
|
||||
The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with
|
||||
a digit, it is interpreted as an octal number; otherwise it is
|
||||
interpreted as a symbolic mode mask similar to that accepted by
|
||||
_c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
|
||||
printed. The --SS option causes the mask to be printed in sym-
|
||||
bolic form; the default output is an octal number. If the --pp
|
||||
a digit, it is interpreted as an octal number; otherwise it is
|
||||
interpreted as a symbolic mode mask similar to that accepted by
|
||||
_c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
|
||||
printed. The --SS option causes the mask to be printed in sym-
|
||||
bolic form; the default output is an octal number. If the --pp
|
||||
option is supplied, and _m_o_d_e is omitted, the output is in a form
|
||||
that may be reused as input. The return status is 0 if the mode
|
||||
was successfully changed or if no _m_o_d_e argument was supplied,
|
||||
was successfully changed or if no _m_o_d_e argument was supplied,
|
||||
and false otherwise.
|
||||
|
||||
uunnaalliiaass [-aa] [_n_a_m_e ...]
|
||||
Remove each _n_a_m_e from the list of defined aliases. If --aa is
|
||||
supplied, all alias definitions are removed. The return value
|
||||
Remove each _n_a_m_e from the list of defined aliases. If --aa is
|
||||
supplied, all alias definitions are removed. The return value
|
||||
is true unless a supplied _n_a_m_e is not a defined alias.
|
||||
|
||||
uunnsseett [-ffvv] [-nn] [_n_a_m_e ...]
|
||||
For each _n_a_m_e, remove the corresponding variable or function.
|
||||
For each _n_a_m_e, remove the corresponding variable or function.
|
||||
If the --vv option is given, each _n_a_m_e refers to a shell variable,
|
||||
and that variable is removed. Read-only variables may not be
|
||||
unset. If --ff is specified, each _n_a_m_e refers to a shell func-
|
||||
tion, and the function definition is removed. If the --nn option
|
||||
is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
|
||||
_n_a_m_e will be unset rather than the variable it references. --nn
|
||||
has no effect if the --ff option is supplied. If no options are
|
||||
supplied, each _n_a_m_e refers to a variable; if there is no vari-
|
||||
able by that name, any function with that name is unset. Each
|
||||
unset variable or function is removed from the environment
|
||||
passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN--
|
||||
and that variable is removed. Read-only variables may not be
|
||||
unset. If --ff is specified, each _n_a_m_e refers to a shell func-
|
||||
tion, and the function definition is removed. If the --nn option
|
||||
is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
|
||||
_n_a_m_e will be unset rather than the variable it references. --nn
|
||||
has no effect if the --ff option is supplied. If no options are
|
||||
supplied, each _n_a_m_e refers to a variable; if there is no vari-
|
||||
able by that name, any function with that name is unset. Each
|
||||
unset variable or function is removed from the environment
|
||||
passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN--
|
||||
DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are
|
||||
unset, they lose their special properties, even if they are sub-
|
||||
sequently reset. The exit status is true unless a _n_a_m_e is read-
|
||||
@@ -1833,17 +1832,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
|
||||
|
||||
wwaaiitt [--ffnn] [_i_d _._._.]
|
||||
Wait for each specified child process and return its termination
|
||||
status. Each _i_d may be a process ID or a job specification; if
|
||||
a job spec is given, all processes in that job's pipeline are
|
||||
waited for. If _i_d is not given, wwaaiitt waits for all running
|
||||
background jobs and the last-executed process substitution, if
|
||||
status. Each _i_d may be a process ID or a job specification; if
|
||||
a job spec is given, all processes in that job's pipeline are
|
||||
waited for. If _i_d is not given, wwaaiitt waits for all running
|
||||
background jobs and the last-executed process substitution, if
|
||||
its process id is the same as $$!!, and the return status is zero.
|
||||
If the --nn option is supplied, wwaaiitt waits for a single job to
|
||||
If the --nn option is supplied, wwaaiitt waits for a single job to
|
||||
terminate and returns its exit status. Supplying the --ff option,
|
||||
when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
|
||||
when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
|
||||
minate before returning its status, instead of returning when it
|
||||
changes status. If _i_d specifies a non-existent process or job,
|
||||
the return status is 127. Otherwise, the return status is the
|
||||
changes status. If _i_d specifies a non-existent process or job,
|
||||
the return status is 127. Otherwise, the return status is the
|
||||
exit status of the last process or job waited for.
|
||||
|
||||
SSEEEE AALLSSOO
|
||||
|
||||
+5
-1
@@ -2929,6 +2929,8 @@ execute_for_command (for_command)
|
||||
|
||||
if (ifsname (identifier))
|
||||
setifs (v);
|
||||
else
|
||||
stupidly_hack_special_variables (identifier);
|
||||
|
||||
retval = execute_command (for_command->action);
|
||||
REAP ();
|
||||
@@ -3428,6 +3430,8 @@ execute_select_command (select_command)
|
||||
}
|
||||
}
|
||||
|
||||
stupidly_hack_special_variables (identifier);
|
||||
|
||||
retval = execute_command (select_command->action);
|
||||
|
||||
REAP ();
|
||||
@@ -4368,7 +4372,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
|
||||
|
||||
begin_unwind_frame ("simple-command");
|
||||
|
||||
if (echo_command_at_execute)
|
||||
if (echo_command_at_execute && (simple_command->flags & CMD_COMMAND_BUILTIN) == 0)
|
||||
xtrace_print_word_list (words, 1);
|
||||
|
||||
builtin = (sh_builtin_func_t *)NULL;
|
||||
|
||||
@@ -1524,6 +1524,8 @@ evalerror (msg)
|
||||
from [0-9][a-z][A-Z]_@ (a = 10, z = 35, A = 36, Z = 61, @ = 62, _ = 63 --
|
||||
you get the picture). */
|
||||
|
||||
#define VALID_NUMCHAR(c) (ISALNUM(c) || ((c) == '_') || ((c) == '@'))
|
||||
|
||||
static intmax_t
|
||||
strlong (num)
|
||||
char *num;
|
||||
@@ -1570,8 +1572,15 @@ strlong (num)
|
||||
base = val;
|
||||
val = 0;
|
||||
foundbase++;
|
||||
|
||||
#if 0 /* TAG:bash-5.1 */
|
||||
/* Make sure a base# is followed by a character that can compose a
|
||||
valid integer constant. Jeremy Townshend <jeremy.townshend@gmail.com> */
|
||||
if (VALID_NUMCHAR (*s) == 0)
|
||||
evalerror (_("invalid integer constant"));
|
||||
#endif
|
||||
}
|
||||
else if (ISALNUM(c) || (c == '_') || (c == '@'))
|
||||
else if (VALID_NUMCHAR (c))
|
||||
{
|
||||
if (DIGIT(c))
|
||||
c = TODIGIT(c);
|
||||
|
||||
Reference in New Issue
Block a user