execline
Software
skarnet.org
The backtick program
backtick runs a program and stores its output in an
environment variable, then executes another program.
Interface
In an execlineb script:
backtick [ -i | -I | -x | -D default ] [ -N | -n ] [ -E | -e ] variable { prog1... } prog2...
- backtick reads prog1... in a
block and unquotes it.
- It runs prog1... as a child process and saves its
output in memory. This output must not contain a null character.
- backtick execs into prog2..., with
variable added to the environment with prog1...'s
output as a value.
Options
- -N : store prog1...'s output as is, including the last newline, if any.
- -n : chomp an ending newline off prog1...'s output. This is the default.
- -e : no autoimport. This is the default.
- -E : autoimport. Before exec'ing into
prog2..., perform a
substitution
so that $? is replaced with prog1...'s exitcode (if
applicable, see below), and
${variable} is replaced with prog1...'s output,
instead of keeping the results in the environment. The variables will not
appear in the environment; if they preexisted in backtick's
environment, they will be removed.
The other options tell backtick what to do if prog1...'s output
is not suitable as the contents of an environment variable (i.e. it
contains a null character) or if prog1... crashes or exits
nonzero:
- -i : backtick exits with an
approximation of prog1's exit code,
or 124 if prog1 wrote a null character. This is the default.
- -I: the value of variable is set to whatever
the start of prog1...'s output is, up to the first null character,
or to whatever prog1... wrote before crashing; chomping is applied
if required; then execution proceeds.
- -x : variable is removed from
the environment, and execution proceeds.
- -D default : the value of variable
is set to default, and execution proceeds.
If the command line can keep running after prog1 crashes or exits
nonzero, i.e. if one of the -I, -x -or -D has been
given, then backtick also adds the ? variable to the
environment. If prog1 exited normally, the variable contains its exit
code; otherwise, 256 plus the number of the signal that killed it.