summaryrefslogtreecommitdiff
path: root/doc/bashref.info
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2023-05-15 13:30:18 -0400
committerChet Ramey <chet.ramey@case.edu>2023-05-15 13:30:18 -0400
commite44e3d50dee26d12927baca188ad2a44a0135173 (patch)
treee4ff8c47078cdd7b23901205f7e1db26cd1f2242 /doc/bashref.info
parentc375f8f45f4882db3098f9b54a19b75d2b176537 (diff)
downloadbash-devel.tar.gz
complete initial implementation of nofork command substitution (${ command; })devel
Diffstat (limited to 'doc/bashref.info')
-rw-r--r--doc/bashref.info341
1 files changed, 194 insertions, 147 deletions
diff --git a/doc/bashref.info b/doc/bashref.info
index fe2b2481..8286ffd8 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.8 from
bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.2, 20 April 2023).
+Bash shell (version 5.2, 14 May 2023).
- This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash
+ This is Edition 5.2, last updated 14 May 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.2, 20 April 2023). The Bash home page is
+Bash shell (version 5.2, 14 May 2023). The Bash home page is
<http://www.gnu.org/software/bash/>.
- This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash
+ This is Edition 5.2, last updated 14 May 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Bash contains features that appear in other popular shells, and some
@@ -419,8 +419,8 @@ File: bashref.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Dou
3.1.2.4 ANSI-C Quoting
......................
-Character sequences of the form $'STRING' are treated as a special kind
-of single quotes. The sequence expands to STRING, with
+Character sequences of the form '$'STRING'' are treated as a special
+kind of single quotes. The sequence expands to STRING, with
backslash-escaped characters in STRING replaced as specified by the ANSI
C standard. Backslash escape sequences, if present, are decoded as
follows:
@@ -2240,11 +2240,11 @@ File: bashref.info, Node: Command Substitution, Next: Arithmetic Expansion, P
--------------------------
Command substitution allows the output of a command to replace the
-command itself. Command substitution occurs when a command is enclosed
-as follows:
+command itself. The standard form of command substitution occurs when a
+command is enclosed as follows:
$(COMMAND)
-or
- `COMMAND`
+or (deprecated)
+ `COMMAND`.
Bash performs the expansion by executing COMMAND in a subshell
environment and replacing the command substitution with the standard
@@ -2253,17 +2253,64 @@ newlines are not deleted, but they may be removed during word splitting.
The command substitution '$(cat FILE)' can be replaced by the equivalent
but faster '$(< FILE)'.
- When the old-style backquote form of substitution is used, backslash
-retains its literal meaning except when followed by '$', '`', or '\'.
-The first backquote not preceded by a backslash terminates the command
+ With the old-style backquote form of substitution, backslash retains
+its literal meaning except when followed by '$', '`', or '\'. The first
+backquote not preceded by a backslash terminates the command
substitution. When using the '$(COMMAND)' form, all characters between
the parentheses make up the command; none are treated specially.
+ There is an alternate form of command substitution:
+
+ ${C COMMAND; }
+
+which executes COMMAND in the current execution environment. This means
+that side effects of COMMAND take effect immediately in the current
+execution environment and persist in the current environment after the
+command completes (e.g., the 'exit' builtin will exit the shell).
+
+ The character C following the open brace must be a space, tab,
+newline, '(', or '|', and the close brace must be in a position where a
+reserved word may appear (i.e., preceded by a command terminator such as
+semicolon). Bash allows the close brace to be joined to the remaining
+characters in the word without being followed by a shell metacharacter
+as a reserved word would usually require.
+
+ This type of command substitution superficially resembles executing
+an unnamed shell function: local variables are created as when a shell
+function is executing, and the 'return' builtin forces COMMAND to
+complete; however, the rest of the execution environment, including the
+positional parameters, is shared with the caller.
+
+ If the first character following the open brace is a '(', COMMAND is
+executed in a subshell, and COMMAND must be terminated by a ')'. This
+is similar to the '(' compound command (*note Command Grouping::). If
+the first character is a '|', the construct expands to the value of the
+'REPLY' shell variable after COMMAND executes, without removing any
+trailing newlines, and the standard output of COMMAND remains the same
+as in the calling shell. Bash creates 'REPLY' as an initially-unset
+local variable when COMMAND executes, and restores 'REPLY' to the value
+it had before the command substitution after COMMAND completes, as with
+any local variable.
+
+ For example, this construct expands to '12345', and leaves the shell
+variable 'X' unchanged in the current execution environment:
+
+ ${ local X=12345 ; echo $X; }
+
+(not declaring 'X' as local would modify its value in the current
+environment, as with normal shell function execution), while this
+construct does not require any output to expand to '12345':
+
+ ${| REPLY=12345; }
+
+and restores 'REPLY' to the value it had before the command
+substitution.
+
Command substitutions may be nested. To nest when using the
backquoted form, escape the inner backquotes with backslashes.
- If the substitution appears within double quotes, word splitting and
-filename expansion are not performed on the results.
+ If the substitution appears within double quotes, Bash does not
+perform word splitting and filename expansion on the results.

File: bashref.info, Node: Arithmetic Expansion, Next: Process Substitution, Prev: Command Substitution, Up: Shell Expansions
@@ -12707,138 +12754,138 @@ D.5 Concept Index

Tag Table:
-Node: Top891
-Node: Introduction2805
-Node: What is Bash?3021
-Node: What is a shell?4135
-Node: Definitions6673
-Node: Basic Shell Features9624
-Node: Shell Syntax10843
-Node: Shell Operation11869
-Node: Quoting13162
-Node: Escape Character14466
-Node: Single Quotes14951
-Node: Double Quotes15299
-Node: ANSI-C Quoting16577
-Node: Locale Translation17887
-Node: Creating Internationalized Scripts19198
-Node: Comments23315
-Node: Shell Commands23933
-Node: Reserved Words24871
-Node: Simple Commands25627
-Node: Pipelines26281
-Node: Lists29280
-Node: Compound Commands31075
-Node: Looping Constructs32087
-Node: Conditional Constructs34582
-Node: Command Grouping49070
-Node: Coprocesses50548
-Node: GNU Parallel53211
-Node: Shell Functions54128
-Node: Shell Parameters62013
-Node: Positional Parameters66401
-Node: Special Parameters67303
-Node: Shell Expansions70517
-Node: Brace Expansion72644
-Node: Tilde Expansion75378
-Node: Shell Parameter Expansion77999
-Node: Command Substitution96401
-Node: Arithmetic Expansion97756
-Node: Process Substitution98724
-Node: Word Splitting99844
-Node: Filename Expansion101892
-Node: Pattern Matching104825
-Node: Quote Removal109827
-Node: Redirections110122
-Node: Executing Commands119815
-Node: Simple Command Expansion120485
-Node: Command Search and Execution122595
-Node: Command Execution Environment124982
-Node: Environment128017
-Node: Exit Status129680
-Node: Signals131464
-Node: Shell Scripts134913
-Node: Shell Builtin Commands137940
-Node: Bourne Shell Builtins139978
-Node: Bash Builtins162177
-Node: Modifying Shell Behavior194176
-Node: The Set Builtin194521
-Node: The Shopt Builtin205119
-Node: Special Builtins221031
-Node: Shell Variables222010
-Node: Bourne Shell Variables222447
-Node: Bash Variables224551
-Node: Bash Features258616
-Node: Invoking Bash259629
-Node: Bash Startup Files265642
-Node: Interactive Shells270773
-Node: What is an Interactive Shell?271184
-Node: Is this Shell Interactive?271833
-Node: Interactive Shell Behavior272648
-Node: Bash Conditional Expressions276277
-Node: Shell Arithmetic280919
-Node: Aliases283880
-Node: Arrays286774
-Node: The Directory Stack293337
-Node: Directory Stack Builtins294121
-Node: Controlling the Prompt298381
-Node: The Restricted Shell301346
-Node: Bash POSIX Mode303956
-Node: Shell Compatibility Mode319749
-Node: Job Control327993
-Node: Job Control Basics328453
-Node: Job Control Builtins333455
-Node: Job Control Variables339250
-Node: Command Line Editing340406
-Node: Introduction and Notation342077
-Node: Readline Interaction343700
-Node: Readline Bare Essentials344891
-Node: Readline Movement Commands346680
-Node: Readline Killing Commands347640
-Node: Readline Arguments349561
-Node: Searching350605
-Node: Readline Init File352791
-Node: Readline Init File Syntax354052
-Node: Conditional Init Constructs377843
-Node: Sample Init File382039
-Node: Bindable Readline Commands385163
-Node: Commands For Moving386367
-Node: Commands For History388418
-Node: Commands For Text393412
-Node: Commands For Killing397061
-Node: Numeric Arguments400094
-Node: Commands For Completion401233
-Node: Keyboard Macros405424
-Node: Miscellaneous Commands406112
-Node: Readline vi Mode412150
-Node: Programmable Completion413057
-Node: Programmable Completion Builtins420837
-Node: A Programmable Completion Example431825
-Node: Using History Interactively437073
-Node: Bash History Facilities437757
-Node: Bash History Builtins440762
-Node: History Interaction445786
-Node: Event Designators449406
-Node: Word Designators450760
-Node: Modifiers452520
-Node: Installing Bash454328
-Node: Basic Installation455465
-Node: Compilers and Options459187
-Node: Compiling For Multiple Architectures459928
-Node: Installation Names461620
-Node: Specifying the System Type463729
-Node: Sharing Defaults464446
-Node: Operation Controls465119
-Node: Optional Features466077
-Node: Reporting Bugs477296
-Node: Major Differences From The Bourne Shell478630
-Node: GNU Free Documentation License495479
-Node: Indexes520656
-Node: Builtin Index521110
-Node: Reserved Word Index527937
-Node: Variable Index530385
-Node: Function Index547373
-Node: Concept Index561157
+Node: Top887
+Node: Introduction2797
+Node: What is Bash?3013
+Node: What is a shell?4127
+Node: Definitions6665
+Node: Basic Shell Features9616
+Node: Shell Syntax10835
+Node: Shell Operation11861
+Node: Quoting13154
+Node: Escape Character14458
+Node: Single Quotes14943
+Node: Double Quotes15291
+Node: ANSI-C Quoting16569
+Node: Locale Translation17881
+Node: Creating Internationalized Scripts19192
+Node: Comments23309
+Node: Shell Commands23927
+Node: Reserved Words24865
+Node: Simple Commands25621
+Node: Pipelines26275
+Node: Lists29274
+Node: Compound Commands31069
+Node: Looping Constructs32081
+Node: Conditional Constructs34576
+Node: Command Grouping49064
+Node: Coprocesses50542
+Node: GNU Parallel53205
+Node: Shell Functions54122
+Node: Shell Parameters62007
+Node: Positional Parameters66395
+Node: Special Parameters67297
+Node: Shell Expansions70511
+Node: Brace Expansion72638
+Node: Tilde Expansion75372
+Node: Shell Parameter Expansion77993
+Node: Command Substitution96395
+Node: Arithmetic Expansion99987
+Node: Process Substitution100955
+Node: Word Splitting102075
+Node: Filename Expansion104123
+Node: Pattern Matching107056
+Node: Quote Removal112058
+Node: Redirections112353
+Node: Executing Commands122046
+Node: Simple Command Expansion122716
+Node: Command Search and Execution124826
+Node: Command Execution Environment127213
+Node: Environment130248
+Node: Exit Status131911
+Node: Signals133695
+Node: Shell Scripts137144
+Node: Shell Builtin Commands140171
+Node: Bourne Shell Builtins142209
+Node: Bash Builtins164408
+Node: Modifying Shell Behavior196407
+Node: The Set Builtin196752
+Node: The Shopt Builtin207350
+Node: Special Builtins223262
+Node: Shell Variables224241
+Node: Bourne Shell Variables224678
+Node: Bash Variables226782
+Node: Bash Features260847
+Node: Invoking Bash261860
+Node: Bash Startup Files267873
+Node: Interactive Shells273004
+Node: What is an Interactive Shell?273415
+Node: Is this Shell Interactive?274064
+Node: Interactive Shell Behavior274879
+Node: Bash Conditional Expressions278508
+Node: Shell Arithmetic283150
+Node: Aliases286111
+Node: Arrays289005
+Node: The Directory Stack295568
+Node: Directory Stack Builtins296352
+Node: Controlling the Prompt300612
+Node: The Restricted Shell303577
+Node: Bash POSIX Mode306187
+Node: Shell Compatibility Mode321980
+Node: Job Control330224
+Node: Job Control Basics330684
+Node: Job Control Builtins335686
+Node: Job Control Variables341481
+Node: Command Line Editing342637
+Node: Introduction and Notation344308
+Node: Readline Interaction345931
+Node: Readline Bare Essentials347122
+Node: Readline Movement Commands348911
+Node: Readline Killing Commands349871
+Node: Readline Arguments351792
+Node: Searching352836
+Node: Readline Init File355022
+Node: Readline Init File Syntax356283
+Node: Conditional Init Constructs380074
+Node: Sample Init File384270
+Node: Bindable Readline Commands387394
+Node: Commands For Moving388598
+Node: Commands For History390649
+Node: Commands For Text395643
+Node: Commands For Killing399292
+Node: Numeric Arguments402325
+Node: Commands For Completion403464
+Node: Keyboard Macros407655
+Node: Miscellaneous Commands408343
+Node: Readline vi Mode414381
+Node: Programmable Completion415288
+Node: Programmable Completion Builtins423068
+Node: A Programmable Completion Example434056
+Node: Using History Interactively439304
+Node: Bash History Facilities439988
+Node: Bash History Builtins442993
+Node: History Interaction448017
+Node: Event Designators451637
+Node: Word Designators452991
+Node: Modifiers454751
+Node: Installing Bash456559
+Node: Basic Installation457696
+Node: Compilers and Options461418
+Node: Compiling For Multiple Architectures462159
+Node: Installation Names463851
+Node: Specifying the System Type465960
+Node: Sharing Defaults466677
+Node: Operation Controls467350
+Node: Optional Features468308
+Node: Reporting Bugs479527
+Node: Major Differences From The Bourne Shell480861
+Node: GNU Free Documentation License497710
+Node: Indexes522887
+Node: Builtin Index523341
+Node: Reserved Word Index530168
+Node: Variable Index532616
+Node: Function Index549604
+Node: Concept Index563388

End Tag Table