(command.CommandList children: [ (C {(Id.Lit_Other ':')} { (braced_var_sub token: (Token id:Id.VSub_Name val:srcdir span_id:6) suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{(.)}) ) } ) (command.CommandList children: [ (command.Sentence child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$srcdir') (/init.sh))}) terminator: (Token id:Id.Op_Semi val:';' span_id:17) ) (C {(path_prepend_)} {(.)}) ] ) (command.Pipeline children: [ (command.Simple words: [{(test-perror)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:29) fd: 2 arg_word: {(1)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:32) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:45))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:48) fd: -1 arg_word: {(t-perror.tmp)} ) ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[37])] ) ] negated: F ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(grep)} {(SQ (Token id:Id.Lit_Chars val:'[0-9]' span_id:55))} {(t-perror.tmp)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:60) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(fail_)} {(DQ ('result should not contain a number'))}) ] ) (command.Pipeline children: [ (command.Simple words: [{(test-perror)} {(SQ )}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:83) fd: 2 arg_word: {(1)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:86) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:99))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:102) fd: -1 arg_word: {(t-perror1.tmp)} ) ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[91])] ) ] negated: F ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(diff)} {(t-perror.tmp)} {(t-perror1.tmp)}) (C {(fail_)} {(DQ ('empty prefix should behave like NULL argument'))}) ] ) (command.Pipeline children: [ (command.Simple words: [{(test-perror)} {(foo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:130) fd: 2 arg_word: {(1)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:133) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:146))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:149) fd: -1 arg_word: {(t-perror3.tmp)} ) ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[138])] ) ] negated: F ) (command.Simple words: [{(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/^/foo: /' span_id:158))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:161) fd: -1 arg_word: {(t-perror.tmp)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:165) fd: -1 arg_word: {(t-perror2.tmp)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(diff)} {(t-perror2.tmp)} {(t-perror3.tmp)}) (C {(fail_)} {(DQ ('prefix applied incorrectly'))}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(test-perror)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:189) fd: -1 arg_word: {(out)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:192) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(fail_)} {(DQ ('unexpected exit status'))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {(test)} {(-s)} {(out)}) (C {(fail_)} {(DQ ('unexpected output'))})] ) (C {(Exit)} {(0)}) ] )