(List (= scope= flags=0 words=[] bindings=[('RTPW', {[LIT_CHARS ./rtpw]})]) (= scope= flags=0 words=[] bindings=[('DEST_PORT', {[LIT_CHARS 9999]})]) (= scope= flags=0 words=[] bindings=[('DURATION', {[LIT_CHARS 3]})]) (= scope= flags=0 words=[] bindings=[('key', {[LIT_CHARS 2b2edc5034f61a72345ca5986d7bfd0189aa6dc2ecab32fd9af74df6dfc6]})]) (= scope= flags=0 words=[] bindings=[('ARGS', {[DQ [LIT_CHARS "-k "][VarSub key][LIT_CHARS " -ae"]]})]) (Com {[LIT_CHARS killall]} {[LIT_CHARS rtpw]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[VarSub RTPW]}) (List (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": starting rtpw receiver process... "]]}) (Fork (Com {[VarSub RTPW]} {[VarSub *]} {[VarSub ARGS]} {[LIT_CHARS -r]} {[LIT_CHARS 0.0.0.0]} {[VarSub DEST_PORT]}) ) (= scope= flags=0 words=[] bindings=[('receiver_pid', {[VarSub !]})]) (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": receiver PID = "][VarSub receiver_pid]]}) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) (Pipeline (Com {[LIT_CHARS ps]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[VarSub receiver_pid]}) ) (= scope= flags=0 words=[] bindings=[('retval', {[VarSub ?]})]) (Com {[LIT_CHARS echo]} {[VarSub retval]}) (If (Com {[LIT_OTHER "["]} {[VarSub retval]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": error"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 254]}) ) ) (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": starting rtpw sender process..."]]}) (Fork (Com {[VarSub RTPW]} {[VarSub *]} {[VarSub ARGS]} {[LIT_CHARS -s]} {[LIT_CHARS 127.0.0.1]} {[VarSub DEST_PORT]}) ) (= scope= flags=0 words=[] bindings=[('sender_pid', {[VarSub !]})]) (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": sender PID = "][VarSub sender_pid]]}) (Pipeline (Com {[LIT_CHARS ps]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[VarSub sender_pid]}) ) (= scope= flags=0 words=[] bindings=[('retval', {[VarSub ?]})]) (Com {[LIT_CHARS echo]} {[VarSub retval]}) (If (Com {[LIT_OTHER "["]} {[VarSub retval]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": error"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 255]}) ) ) (Com {[LIT_CHARS sleep]} {[VarSub DURATION]}) (Com {[LIT_CHARS kill]} {[VarSub receiver_pid]}) (Com {[LIT_CHARS kill]} {[VarSub sender_pid]}) (Com {[LIT_CHARS wait]} {[VarSub receiver_pid]}) (Com {[LIT_CHARS wait]} {[VarSub sender_pid]}) (Com {[LIT_CHARS echo]} {[VarSub 0]} {[DQ [LIT_CHARS ": done (test passed)"]]}) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: can't find executable"]]} {[VarSub RTPW]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) )