Components | All | New | MacOS | Windows | Linux | iOS | ||||
Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old |
Shell.ReadOutputText
Reads output.
Component | Version | macOS | Windows | Linux | Server | iOS SDK |
Shell | 7.5 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
Parameters
Parameter | Description | Example | Flags |
---|---|---|---|
ShellRef | The reference number from the shell. | $shell | |
Encoding | The text encoding for result. Possible encoding names: ANSI, ISO-8859-1, Latin1, Mac, Native, UTF-8, DOS, Hex, Base64 or Windows. More listed in the FAQ. |
UTF8 | Optional |
Result
Returns text or error.
Description
Reads output.When child process writes something to output stream, you can read it here.
See also Shell.ReadErrorText for reading error output.
The plugin internally queries Shell.AvailableBytesOutput to see how much to read and return.
Some processes send data in chunks, so you have to read one chunk before you get the next one. So you may do a loop with calling Shell.Wait with e.g. 0.1 seconds. Check with Shell.IsRunning whether app is still running, so you can exit the loop if needed. And each time the loop runs, check if there is new output and read it.
Examples
Loop and collect messages:
Set Variable [ $error ; Value: "" ]
Set Variable [ $result ; Value: "" ]
# Loop while app runs and collect messages
Loop
# Wait a second or till it quits
Set Variable [ $s ; Value: MBS( "Shell.Wait"; $shell; 1) ]
# And read output
Set Variable [ $error ; Value: $error & MBS( "Shell.ReadErrorText"; $shell; "UTF-8") ]
Set Variable [ $result ; Value: $result & MBS( "Shell.ReadOutputText"; $shell; "UTF-8") ]
Set Field [ Shell::Error ; MBS( "Text.ReplaceNewline"; $error; 1) ]
Set Field [ Shell::Output ; MBS( "Text.ReplaceNewline"; $result; 1) ]
# exit when done
Exit Loop If [ MBS( "Shell.IsRunning"; $shell) ≠ 1 ]
End Loop
See also
- Shell.AvailableBytesOutput
- Shell.CloseInput
- Shell.Execute
- Shell.IsRunning
- Shell.PeekOutputText
- Shell.ReadErrorText
- Shell.SetDataAvailableScript
- Shell.Wait
- Shell.WriteInputText
- Text.ReplaceNewline
Release notes
- Version 11.2
- Changed a couple of internal text functions to recognize that text with UTF-8 as a BOM for UTF-16 or UTF-32 and then reinterpret bytes to handle that. Useful for Shell.ReadOutputText, when a command line tool outputs UTF-16 instead of expected UTF-8.
Example Databases
Blog Entries
- Convert Office Files in FileMaker
- MBS FileMaker Plugin, version 11.2pr1
- Tip of the day: Shell Execute as one Let statement
- Run fmsadmin from script
- Convert office documents to PDF with LibreOffice
- Tips for FileMaker Data Migration Tool
- Execute defaults command with Shell functions
- Convert to MP3 with new Shell commands and ffmpeg
This function checks for a license.
Created 11st November 2017, last changed 28th January 2022
