shellscript
shellscript
SOURCE
,
RESULT
,
TIMEOUT
,
PASSWORD

The shellscript statement executes a UNIX shell script.

Parameters

This statement has four parameters:

source – UNIX shell script (source code). Note: It is very convenient to use “pipe” delimiters for this parameter, for example `|||script|||`. This eliminates needing to worry about the delimiters that occur in the script itself.

result – Name of the field or variable in which the result of the script will be placed. This result is any output sent to the standard console ouptut. If this parameter is not supplied the result will be placed in the global variable ScriptResult.

timeout – Maximum amount of time the script will be allowed to run (in seconds). If this option is not specified you can set the default using the scripttimeout statement. If this default has never been set the default is 60 seconds.

password – Password (if empty then will prompt for password if needed.)

Description

This statement executes a UNIX shell script. Here is a simple example that displays a list of files in the Library folder.

    local libraryFiles
    shellscript |||cd ~/Library;ls -l |||,libraryFiles
    displaydata libraryFiles

This example uses two shell commands: cd (change directory) and ls (list files). There are hundreds of different shell commands available. Describing all of these commands is beyond the scope of this documentation, but there are many books available, as well as numerous web resources.

Panorama formulas can be embedded in the script using special tags. To embed a Panorama formula use

    $«formula»$

The formulas are calculated in advance, then embedded into the source code as constants. For example, the formula `$«2*3»$` will be embedded into the program as `6`. The formula `$«upper("hello world")»$` will be embedded as `HELLO\ WORLD`.

In the case of text formulas any special characters will be encoded as necessary for a proper shell script literal. For example the formula `$«{"}»$` will be embedded as `"`.

To embed a Panorama formula with no quotes or translation use

    ^«formula»^

Note: If your script begins with ; then Panorama will run the script using the current bash profile (see usebashprofile, which you should run before calling the script with this option.)

Note: This statement was designed to replace the older executeunix and executesudounix (which are retained for compatibility with older databases). It and its equivalent function, shellscript(, are similar to the posixscript( function, but with some significant differences. When using the posixscript( function, no substitutions are performed on the script code, so you cannot embed Panorama variables and formulas into the code as described above (of course you can use a formula to build the code any way you want). Most importantly, the posixscript( function runs the script by using a native Cocoa method (NSTask) while the shellscript statement and shellscript( function use AppleScript, so the posixscript( function is faster. The shellscript statement and shellscript( function are retained for compatibility with legacy database applications, but posixstring( is recommended for new applications.

If no substitutions, timeout or password are specified, a statement in the form `shellscript source,result` may usually be replaced by

    result=posixscript(source)

See Also

- applescript -- executes an AppleScript.
- applescript( -- executes AppleScript source code and returns the result.
- blindposixscript( -- executes a POSIX shell script using NSTask and returns the process id.
- executeapplescript -- compiles and runs an AppleScript.
- executeperlscript -- executes Perl code.
- executesudounix -- executes a UNIX shell command using *sudo* (root) privileges.
- executeunix -- executes a UNIX shell command.
- info("posixtasks") -- list of POSIX shell tasks running in the background.
- perl -- executes a Perl script (program).
- perl( -- executes a perl program and returns the result (stdout).
- php -- executes a PHP script (program).
- php( -- executes a PHP program and returns the result.
- posixscript( -- executes a POSIX shell script using NSTask and returns the result.
- posixtask -- executes a POSIX shell script in the background using NSTask.
- posixtask( -- executes a POSIX shell script in the background using NSTask.
- python -- executes a Python script (program).
- python( -- executes a python program and returns the result (stdout).
- ruby -- executes a Ruby script (program).
- ruby( -- executes a ruby program and returns the result (stdout).
- scriptbglog -- specifies a path/file for output from STDOUT from embedded programs run in the background (Perl, Ruby, Python, PHP).
- Scripting Language Configuration -- configuring the scripting languages available to Panorama (Perl, PHP, Python and Ruby).
- scripttimeout -- sets the maximum runtime allowed for an embedded program (AppleScript, ShellScript, Perl, Ruby or Python).
- shellscript( -- executes a UNIX shell script and returns the result.
- stopposixtask -- stops a POSIX shell script that is running in the background.
- usebashprofile -- grabs the search path from the `.Bash_profile` file in the user's home folder, so that these paths will be used by scripting languages (*Ruby, Python*, etc.).
- xcallbackurl -- performs an action in another application using the x-callback-url mechanism.

History

Version | Status | Notes
10.0 | No Change | Carried over from Panorama 6.0.