Toolkits > SampleShellSource 1.1.0 > sample > TestShellSourceBasic1.spl
This sample application executes a shell command with a variety of ShellSource operators illustrating how to specify the operator's required and optional parameters, and writes STDOUT from the command into files.
The command copies lines from a text file to the ShellSource operator's output tuples.
composite TestShellSourceBasic1 {
param
expression<rstring> $command: "cat " + dataDirectory() + "/ozymandias.txt";
graph
// execute a shell command that writes text lines to STDOUT and produce tuples containing them
stream<rstring line> A_STDOUTStream = ShellSource() {
param
command: $command; }
() as DebugA_STDOUTStream = FileSink(A_STDOUTStream) { param file: "debug.TestShellSourceBasic1.A_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
// execute a shell command that writes text lines to STDOUT and produce tuples containing them
stream<rstring line> B_STDOUTStream = ShellSource() {
param
command: $command;
stdoutAttribute: "line"; }
() as DebugB_STDOUTStream = FileSink(B_STDOUTStream) { param file: "debug.TestShellSourceBasic1.B_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
// execute a shell command that writes text lines to STDOUT and produce tuples containing the text plus their line numbers and character counts
stream<uint64 lineNumber, int32 lineLength, rstring line> C_STDOUTStream as Out = ShellSource() {
param
command: $command;
output Out:
lineNumber = lineCounters()[1],
lineLength = length(stdoutLine()),
line = stdoutLine(); }
() as DebugC_STDOUTStream = FileSink(C_STDOUTStream) { param file: "debug.TestShellSourceBasic1.C_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
// after a short delay, execute a shell command that writes text lines to STDOUT and produce tuples containing them
stream<rstring line> D_STDOUTStream = ShellSource() {
param
command: $command;
initDelay: 1.5; }
() as DebugD_STDOUTStream = FileSink(D_STDOUTStream) { param file: "debug.TestShellSourceBasic1.D_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
// repeatedly execute a shell command that writes text lines to STDOUT and produce tuples containing them
stream<rstring line> E_STDOUTStream = ShellSource() {
param
command: $command;
iterationCount: 3u;
iterationInterval: 3.0; }
() as DebugE_STDOUTStream = FileSink(E_STDOUTStream) { param file: "debug.TestShellSourceBasic1.E_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
}