Topics   All   MacOS (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Deprecated   Guides   Examples   Videos
New in version: 10.5   11.0   11.1   11.2   11.3   11.4   11.5   12.0   12.1   12.2    Statistic    FMM    Blog  

Shell.ReadOutputText

Reads output.

Component Version macOS Windows Linux Server iOS SDK License
Shell 7.5 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ❌ No Paid
MBS( "Shell.ReadOutputText"; ShellRef { ; Encoding } )   More

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

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

Created 11st November 2017, last changed 28th January 2022


Shell.ReadErrorText - Shell.Release

Feedback: Report problem or ask question.


Start Chat