Execute Shell |
Execute a command in the (UNIX or Windows) shell of the operating system.
Syntax
Execute Shell [ Select ; Result ; Shell command ; Timeout ; Wait on result ;
Encoding ; Wait time after exit ; Show command window ]
Options
Select entire contents | replaces the contents of a field with the result. If not checked the result replaces the currently selected portion of the field |
Result | the result of the shell command or an error code |
Shell command | the command to be executed |
Timeout | specify the timeout time in seconds (default = 20 seconds) |
Wait on result | uncheck to execute the shell command without waiting on a result |
Encoding | the desired character encoding, like UTF-8 |
Wait time after exit | (Windows only) wait the specified seconds after the command finishes |
Show command window | (Windows only) show the command window when the shell is running |
Returned Result
Data type returned
Text
Result
The result of the shell command or an error code
If an error occurs it will start with 2 dollars, followed by the error code. You should always check for errors. Returned error codes can be:
$$-4218 | kErrCanNotEnable | can not start a shell |
$$-4230 | kErrTimeout | timeout error |
Other errors may be returned.
Originated in
Troi File Plug-in 9.0
Compatibility
FileMaker Pro 17 to FileMaker Pro 21 (2024)
Considerations
This is a powerful step, with which you can accomplish multiple commands. Please read about the shell command in Unix or Windows before using this.
For Windows: to be able to use spaces and quotes in the command wrap the whole command in 2 extra double quotes, one at the beginning and one at the end, like “”C:\testapp.exe” “test param””
(Windows) If you choose UTF8 Encoding the plug-in indicates invalid UTF-8 characters with the string <INVALID UTF8>.
(macOS) If you need sudo (execute as superuser) you can do this like this:
echo "yourPassword" | sudo -S yourCommand variables etc
For example:
echo "topsecret" | sudo -S ls -al
This will execute the ls command as the superuser.
(macOS) TIP By default the plug-in only returns results from the Unix standard output (stdout). Some Unix commands send error and diagnostic messages to the standard error output (stderr).
If you want the standard error output to be added to the function result add a redirection to stdout to the end of the Unix command: 2>&1. This will redirect stderr (2) to stdout (1).
For example when using the rm (remove) command you can add the redirect like this:
rm nonexistingfile.txt 2>&1
Instead of an empty result the result will be:
rm: nonexistingfile.txt: No such file or directory
Example
On Windows:
Execute Shell [ Select ; gResult ; "dir C:\" ]
On macOS :
Execute Shell [ Select ; gResult ; "ls /" ]
This will list the contents of the root folder.
Example 2
On Windows:
Execute Shell [ Select ; gResult ; "echo testtext > C:\example.txt" ; Timeout: 5 ]
On macOS :
Execute Shell [ Select ; gResult ; "echo testtext > /example.txt" ; Timeout: 5 ]
This will create a text file example.txt on your startup disk. If the command takes more time than 5 seconds the plug-in will return with a timeout error $$-4230.
Related function
TrFile_ExecuteShell |
Related topics
Troi File Plug-in online help (overview)