Invoke command line scripts in action code

Tinderbox Icon

Actions may invoke command-line scripts. The action

$MyString=`perl -v 

runs the command

perl -v 

and copies its standard output to the user string attribute MyString.

The command is interpreted by /bin/sh.

The ` operator is not handled as a conventional unary operator, like negate (-). Tinderbox will do full variable interpolation, and the command may be assembled from other attributes and references:

$MyString=`$Command(parent) 

So, the ` operator applies to everything up to the succeeding semicolon or the end of the command.

$MyString=`ls -l;$Color="red";$BorderColor="white"; 

The command may thus contain spaces. The command begins with the first non-white-space character following the `, and continues to the first semicolon. For example:

$MyString=`perl -v;$Color="red";$MyDir=`pwd 

Attribute interpolation is applied to the entire command line

$Delivered=`myQuery $TrackingID $UserName(parent) 

If you need to include the $ character in a command, escape it with backslash.

Interpolated attribute names are terminated when Tinderbox reaches the end of the command, a character that can't be part of an attribute name (e.g. white space), or a second $. Thus, if $AccountNumber holds the string "3716",

$Delivered=`myDatebaseQuery $AccountNumber$x31 

would create the command:

$MyDatabaseQuery 3716x31 

An alternate way to access command lines is to use the runCommand() operator. From v4.6 this also benefits from not requiring a left side to the expression.


Up: Actions & Rules
Previous: Self-Cancelling Rules & Actions  Next: Using Export codes in Actions (deprecated) 

[Last updated: 14 Dec 2009, using v5.0]

Google search aTbRef for:  

Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 License
[See aTbRef CC licence Attribution/Waiver info info]

Creative Commons License

Made with Tinderbox