Execute (UNIX) Command {R}←⎕SH Y
⎕SH
executes a UNIX shell or a Windows Command Processor. ⎕SH
is a synonym of ⎕CMD
. Either function may be used in either environment (UNIX or Windows) with exactly the same effect. ⎕SH
is probably more natural for the UNIX user. This section describes the behaviour of ⎕SH
and ⎕CMD
under UNIX. See "Execute Windows Command: " for a discussion of the behaviour of these system functions under Windows.
The system commands )SH
and )CMD
provide similar facilities. For further information, see Execute (UNIX) Command: and Example.
Y
must be a simple character scalar or vector representing a UNIX shell command. R
is a nested vector of character vectors.
Y
may be any acceptable UNIX command. If the command does not produce any output, R
is 0⍴⊂''
but the result is suppressed if not explicitly used or assigned. If the command has a non-zero exit code, then APL will signal a DOMAIN ERROR
. If the command returns a result and has a zero exit code, then each element of R
will be a line from the standard output (stdout) of the command. Output from standard error (stderr) is not captured unless redirected to stdout.
Examples
⎕SH'ls'
FILES WS temp
⎕SH 'rm WS/TEST'
⎕SH 'grep bin /etc/passwd ; exit 0'
bin:!:2:2::/bin:
⎕SH 'apl MYWS <inputfile >out1 2>out2 &'
Note
This function is disabled and instead generates a DOMAIN ERROR
if the RIDE_SPAWNED parameter is non-zero. This is designed to prevent it being invoked from a RIDE session which does not support this type of user interface. For further details, see the RIDE User Guide.
Under macOS and Linux, if the configuration parameter ENABLE_CEF is 1, Auxiliary Processors cannot be used (they hang on error). The default value is 1 unless you are not running under a desktop (for example, you are running Dyalog in a PuTTY session when the default is 0).