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 is designed to replace the older executeunix and executesudounix (which are retained for compatibility with older databases).

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.
- 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.
- 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).
- 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.
- 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.