(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(Id.Lit_Other ':') (/bin) (Id.Lit_Other ':') (/usr/bin)} spids: [8] ) ] ) (C {(export)} {(PATH)}) (C {(echo)} {(-n)} {(DQ ('Shell test 1 '))}) (C {(rm)} {(-rf)} {(DIR_SH1)}) (C {(mkdir)} {(DIR_SH1)}) (C {(cd)} {(DIR_SH1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:f) op: assign_op.Equal rhs: {(../test1.c)} spids: [42] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-r)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:52) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:58) ) ] spids: [45 54] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(sh1)} {(cannot)} {(read)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:71) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:73) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:76) ) ] ) (command.Simple words: [{(echo)} {(DQ (abcdefghijklmnopqrstuvwxyz))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:90) fd:-1 arg_word:{(alpha)}) ] ) (command.Simple words: [{(echo)} {(DQ (ABCDEFGHIJKLMNOPQRSTUVWXYZ))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:99) fd:-1 arg_word:{(ALPHA)}) ] ) (command.Simple words: [{(echo)} {(DQ (0123456789))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:108) fd:-1 arg_word:{(num)})] ) (command.Simple words: [{(echo)} {(DQ ('!@#') (Id.Lit_Other '$') ('%^&*()_+=-{}[]:;<>?/.,'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:119) fd: -1 arg_word: {(special)} ) ] ) (C {(cp)} {(/etc/rc)} {(rc)}) (C {(cp)} {(/etc/passwd)} {(passwd)}) (command.Simple words: [{(cat)} {(alpha)} {(ALPHA)} {(num)} {(rc)} {(passwd)} {(special)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:148) fd:-1 arg_word:{(tmp)})] ) (command.Simple words: [{(cat)} {(tmp)} {(tmp)} {(tmp)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:159) fd:-1 arg_word:{(f1)})] ) (C {(mkdir)} {(foo)}) (C {(cp)} {(/etc/rc)} {(/etc/passwd)} {(foo)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(foo/rc)} {(/etc/rc)}) terminator: (Token id:Id.Op_Semi val:';' span_id:189) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:195) ) ] spids: [179 191] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(cp)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:210) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(foo/passwd)} {(/etc/passwd)}) terminator: (Token id:Id.Op_Semi val:';' span_id:224) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:230) ) ] spids: [214 226] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(cp)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:245) ) ] ) (C {(rm)} {(-rf)} {(foo)}) (command.Simple words: [{(cat)} {(num)} {(num)} {(num)} {(num)} {(num)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:271) fd:-1 arg_word:{(y)})] ) (command.Simple words: [{(wc)} {(-c)} {(y)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:280) fd:-1 arg_word:{(x1)})] ) (command.Simple words: [{(echo)} {(DQ (' 55 y'))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:289) fd:-1 arg_word:{(x2)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x1)} {(x2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:301) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:307) ) ] spids: [292 303] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(cat)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:322) ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:328) fd:-1 arg_word:{(y)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:331) fd:-1 arg_word:{(z)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:343) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:349) ) ] spids: [334 345] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(cat)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:364) ) ] ) (command.Simple words: [{(cat)} {(passwd)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:376) fd:-1 arg_word:{(p)})] ) (C {(cp)} {(passwd)} {(q)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(p)} {(q)}) terminator: (Token id:Id.Op_Semi val:';' span_id:394) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:400) ) ] spids: [385 396] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(ar)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:415) ) ] ) (command.Simple words: [{(date)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:421) fd:-1 arg_word:{(r)})] ) (command.Simple words: [{(ar)} {(r)} {(x.a)} {(p)} {(q)} {(r)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:436) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(ar)} {(r)} {(x.a)} {(/usr/bin/cp)}) (C {(ar)} {(r)} {(x.a)} {(/usr/bin/cat)}) (C {(rm)} {(p)} {(q)}) (C {(mv)} {(r)} {(R)}) (C {(ar)} {(x)} {(x.a)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(p)} {(/etc/passwd)}) terminator: (Token id:Id.Op_Semi val:';' span_id:482) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:488) ) ] spids: [473 484] ) ] else_action: [ (command.Sentence child: (C {(Error)} {(on)} {(ar)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:501) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(q)} {(/etc/passwd)}) terminator: (Token id:Id.Op_Semi val:';' span_id:514) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:520) ) ] spids: [505 516] ) ] else_action: [ (command.Sentence child: (C {(Error)} {(on)} {(ar)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:533) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(r)} {(R)}) terminator: (Token id:Id.Op_Semi val:';' span_id:546) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:552) ) ] spids: [537 548] ) ] else_action: [ (command.Sentence child: (C {(Error)} {(on)} {(ar)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:565) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(cp)} {(/usr/bin/cp)}) terminator: (Token id:Id.Op_Semi val:';' span_id:578) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:584) ) ] spids: [569 580] ) ] else_action: [ (command.Sentence child: (C {(Error)} {(on)} {(ar)} {(test)} {(5)}) terminator: (Token id:Id.Op_Semi val:';' span_id:597) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(cat)} {(/usr/bin/cat)}) terminator: (Token id:Id.Op_Semi val:';' span_id:610) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:616) ) ] spids: [601 612] ) ] else_action: [ (command.Sentence child: (C {(Error)} {(on)} {(ar)} {(test)} {(6)}) terminator: (Token id:Id.Op_Semi val:';' span_id:629) ) ] ) (C {(rm)} {(cp)} {(cat)} {(p)} {(q)} {(r)}) (command.Simple words: [{(ar)} {(d)} {(x.a)} {(r)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:653) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(ar)} {(x)} {(x.a)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-r)} {(r)}) terminator: (Token id:Id.Op_Semi val:';' span_id:669) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(ar)} {(test)} {(7)}) terminator: (Token id:Id.Op_Semi val:';' span_id:684) ) ] spids: [662 671] ) ] ) (C {(rm)} {(-rf)} {(p)} {(q)} {(r)} {(R)}) (command.If arms: [ (if_arm cond: [ (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:708) command_list: (command.CommandList children: [(C {(basename)} {(/usr/ast/foo.c)} {(.c)})] ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:foo span_id:722))} ) ] action: [(C {(echo)} {(Error)} {(on)} {(basename)} {(test)} {(1)})] spids: [704 726] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:747) command_list: (command.CommandList children:[(C {(basename)} {(a/b/c/d)})]) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:d span_id:759))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:761) ) ] action: [ (command.Sentence child: (C {(Error)} {(on)} {(basename)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:774) ) ] spids: [743 763] ) ] ) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(x.c)}) (command.Simple words: [{(echo)} {(DQ ('/a/s//#####/g'))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:797) fd:-1 arg_word:{(s)})] ) (command.Simple words: [{(sed)} {(-f)} {(s)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:809) fd:-1 arg_word:{(x.c)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:812) fd:-1 arg_word:{(y.c)}) ] ) (command.Simple words: [{(cdiff)} {(x.c)} {(y.c)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:824) fd:-1 arg_word:{(y)})] ) (command.Simple words: [{(patch)} {(x.c)} {(y)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:836) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x.c)} {(y.c)}) terminator: (Token id:Id.Op_Semi val:';' span_id:851) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:857) ) ] spids: [842 853] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(Id.KW_In in)} {(cdiff)} {(test)}) terminator: (Token id:Id.Op_Semi val:';' span_id:870) ) ] ) (C {(rm)} {(x.c) (Id.Lit_Star '*')} {(y.c)} {(s)} {(y)}) (command.Simple words: [{(ls)} {(/etc)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:893) fd:-1 arg_word:{(x)})] ) (command.Simple words: [{(grep)} {(-v)} {(DQ (passwd))} {(x)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:909) fd:-1 arg_word:{(y)})] ) (command.Simple words: [{(comm)} {(-3)} {(x)} {(y)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:923) fd:-1 arg_word:{(z)})] ) (command.Simple words: [{(echo)} {(DQ (passwd))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:935) fd:-1 arg_word:{(w)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(w)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:947) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(comm)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:966) ) ] spids: [938 949] ) ] ) (command.Simple words: [{(comm)} {(-13)} {(x)} {(y)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:979) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:992) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(comm)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1007) ) ] spids: [985 994] ) ] ) (C {(rm)} {(-rf)} {(w)} {(x)} {(y)} {(z)}) (command.Simple words: [{(compress)} {(-fc)} {($ Id.VSub_DollarName '$f')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1033) fd: -1 arg_word: {(x.c.Z)} ) ] ) (command.Simple words: [{(compress)} {(-cd)} {(x.c.Z)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1045) fd:-1 arg_word:{(y)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$f')} {(y)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1060) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(Id.KW_In in)} {(compress)} {(test)} {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1079) ) ] spids: [1051 1062] ) ] ) (C {(rm)} {(-rf)} {(x.c.Z)} {(y)}) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(x)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1106) fd:-1 arg_word:{(y)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1109) fd: -1 here_begin: {(END)} here_end_span_id: 1118 stdin_parts: [('g/a/s//#####/g\n') ('g/b/s//@@@@@/g\n') ('g/c/s//!!!!!/g\n') ('w\n') ('q\n')] ) ] ) (command.Simple words: [{(ed)} {(x)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:1123) fd:-1 arg_word:{(y)}) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1126) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1131) fd:-1 arg_word:{(y)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1134) fd: -1 here_begin: {(END)} here_end_span_id: 1143 stdin_parts: [('g/#####/s//a/g\n') ('g/@@@@@/s//b/g\n') ('g/!!!!!/s//c/g\n') ('w\n') ('q\n')] ) ] ) (command.Simple words: [{(ed)} {(x)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:1148) fd:-1 arg_word:{(y)}) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1151) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1163) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1169) ) ] spids: [1154 1165] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(Id.KW_In in)} {(ed)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1184) ) ] ) (C {(rm)} {(x)} {(y)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1202) command_list: (command.CommandList children: [(C {(expr)} {(1)} {(Id.Lit_Other '+')} {(1)})] ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(2)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1218) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1233) ) ] spids: [1198 1220] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1241) command_list: (command.CommandList children: [(C {(expr)} {(10000)} {(-)} {(1)})] ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(9999)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1257) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1272) ) ] spids: [1237 1259] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1280) command_list: (command.CommandList children: [ (C {(expr)} {(100)} {(SQ (Token id:Id.Lit_Chars val:'*' span_id:1288))} {(50)} ) ] ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(5000)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1298) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1313) ) ] spids: [1276 1300] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1321) command_list: (command.CommandList children:[(C {(expr)} {(120)} {(/)} {(5)})]) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(24)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1337) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1352) ) ] spids: [1317 1339] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1360) command_list: (command.CommandList children: [(C {(expr)} {(143)} {(Id.Lit_Other '%')} {(7)})] ) ) } {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(3)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1376) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(5)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1391) ) ] spids: [1356 1378] ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:a) op:assign_op.Equal rhs:{(100)} spids:[1395])] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1399) command_list: (command.CommandList children: [(C {(expr)} {($ Id.VSub_DollarName '$a')} {(Id.Lit_Other '+')} {(1)})] ) ) } spids: [1398] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {($ Id.VSub_DollarName '$a')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:101 span_id:1421))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1423) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(expr)} {(test)} {(6)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1438) ) ] spids: [1411 1425] ) ] ) (command.Simple words: [{(fgrep)} {(DQ (abc))} {(alpha)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1454) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(alpha)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1467) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(fgrep)} {(test)} {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1486) ) ] spids: [1457 1469] ) ] ) (command.Simple words: [{(fgrep)} {(DQ (abc))} {(num)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1498) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1508) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(fgrep)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1523) ) ] spids: [1501 1510] ) ] ) (command.Simple words: [{(cat)} {(alpha)} {(num)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1533) fd:-1 arg_word:{(z)})] ) (command.Simple words: [{(fgrep)} {(DQ (012))} {(z)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1544) fd:-1 arg_word:{(w)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(w)} {(num)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1556) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1562) ) ] spids: [1547 1558] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(fgrep)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1575) ) ] ) (command.Simple words: [{(date)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1586) fd: -1 arg_word: {(Rabbit)} ) ] ) (command.Simple words: [{(echo)} {(DQ (Rabbit))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1595) fd:-1 arg_word:{(y)})] ) (command.Simple words: [{(find)} {(.)} {(-name)} {(Rabbit)} {(-print)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1608) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1620) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(find)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1639) ) ] spids: [1611 1622] ) ] ) (command.Simple words: [{(find)} {(.)} {(-name)} {(Bunny)} {(-print)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1653) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1663) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(find)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1678) ) ] spids: [1656 1665] ) ] ) (C {(rm)} {(Rabbit)} {(y)} {(z)}) (command.Simple words: [{(grep)} {(DQ (a))} {(alpha)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1702) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(alpha)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1714) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1720) ) ] spids: [1705 1716] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1735) ) ] ) (command.Simple words: [{(grep)} {(DQ (a))} {(ALPHA)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1747) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(x)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1757) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1772) ) ] spids: [1750 1759] ) ] ) (command.Simple words: [{(grep)} {(-v)} {(DQ (0))} {(alpha)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1786) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(alpha)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1798) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1804) ) ] spids: [1789 1800] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1819) ) ] ) (command.Simple words: [{(grep)} {(-s)} {(DQ (a))} {(alpha)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1833) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(x)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1843) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1858) ) ] spids: [1836 1845] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(grep)} {(-s)} {(DQ (a))} {(alpha)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1874) fd: -1 arg_word: {(x)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1876) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(5)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1895) ) ] spids: [1862 1878] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(grep)} {(-s)} {(DQ (a))} {(ALPHA)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1911) fd: -1 arg_word: {(x)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1913) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(grep)} {(test)} {(6)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1928) ) ] spids: [1899 1915] ) ] ) (command.Simple words: [{(head)} {(-1)} {(f1)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1942) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(alpha)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1954) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(head)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1973) ) ] spids: [1945 1956] ) ] ) (command.Simple words: [{(head)} {(-2)} {(f1)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1983) fd:-1 arg_word:{(x)})] ) (command.Simple words: [{(cat)} {(alpha)} {(ALPHA)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1992) fd:-1 arg_word:{(y)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(y)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2004) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')} {(Id.KW_Else else)} {(echo)} {(Error)} {(on)} {(head)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2023) ) ] spids: [1995 2006] ) ] ) (C {(mkdir)} {(FOO)}) (C {(cp)} {(passwd)} {(FOO/z)}) (C {(cp)} {(alpha)} {(FOO/x)}) (C {(cp)} {(ALPHA)} {(FOO/y)}) (C {(cd)} {(FOO)}) (command.Simple words: [{(ls)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2059) fd:-1 arg_word:{(w)})] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2064) fd:-1 arg_word:{(w1)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2067) fd: -1 here_begin: {(END)} here_end_span_id: 2075 stdin_parts: [('w\n') ('x\n') ('y\n') ('z\n')] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(w)} {(w1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2085) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2091) ) ] spids: [2076 2087] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(ls)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2106) ) ] ) (C {(rm)} {(Id.Lit_Star '*')}) (C {(cd)} {(..)}) (C {(rmdir)} {(FOO)}) (C {(mkdir)} {(Foo)} {(Bar)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-d)} {(Foo)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2139) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2145) ) ] spids: [2132 2141] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(mkdir)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2160) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-d)} {(Bar)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2171) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2177) ) ] spids: [2164 2173] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(mkdir)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2192) ) ] ) (C {(rmdir)} {(Foo)} {(Bar)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-d)} {(Foo)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2209) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(mkdir)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2224) ) ] spids: [2202 2211] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-d)} {(Foo)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2235) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(rmdir)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2250) ) ] spids: [2228 2237] ) ] ) (C {(mkdir)} {(MVDIR)}) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(x)}) (C {(mv)} {(x)} {(y)}) (C {(mv)} {(y)} {(z)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$f')} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2289) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2295) ) ] spids: [2280 2291] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(mv)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2310) ) ] ) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(x)}) (C {(mv)} {(x)} {(MVDIR/y)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$f')} {(MVDIR/y)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2335) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2341) ) ] spids: [2326 2337] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(mv)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2356) ) ] ) (command.Pipeline children: [ (command.Simple words: [{(rev)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2366) fd: -1 arg_word: {(f1)} ) ] ) (command.Simple words: [{(head)} {(-1)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2375) fd: -1 arg_word: {(ahpla)} ) ] ) ] negated: F ) (command.Simple words: [{(echo)} {(DQ (zyxwvutsrqponmlkjihgfedcba))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2384) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(ahpla)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2396) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2402) ) ] spids: [2387 2398] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(rev)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2417) ) ] ) (command.Simple words: [{(rev)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2423) fd: -1 arg_word: {($ Id.VSub_DollarName '$f')} ) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2426) fd:-1 arg_word:{(x)}) ] ) (command.Simple words: [{(rev)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:2431) fd:-1 arg_word:{(x)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2434) fd:-1 arg_word:{(y)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$f')} {(x)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2446) ) ] action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(rev)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2461) ) ] spids: [2437 2448] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$f')} {(y)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2474) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2480) ) ] spids: [2465 2476] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(error)} {(on)} {(rev)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2495) ) ] ) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(w)}) (C {(cp)} {(alpha)} {(x)}) (C {(cp)} {(ALPHA)} {(y)}) (C {(cp)} {(num)} {(z)}) (command.Simple words: [{(shar)} {(w)} {(x)} {(y)} {(z)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2537) fd:-1 arg_word:{(x1)})] ) (C {(rm)} {(w)} {(x)} {(y)} {(z)}) (command.Simple words: [{(sh)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:2552) fd:-1 arg_word:{(x1)}) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2555) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(w)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2567) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2573) ) ] spids: [2558 2569] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(shar)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2588) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(alpha)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2601) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2607) ) ] spids: [2592 2603] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(shar)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2622) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(ALPHA)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2635) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2641) ) ] spids: [2626 2637] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(shar)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2656) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(z)} {(num)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2669) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2675) ) ] spids: [2660 2671] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(shar)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2690) ) ] ) (command.Simple words: [{(sort)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2700) fd: -1 arg_word: {($ Id.VSub_DollarName '$f')} ) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2703) fd:-1 arg_word:{(x)}) ] ) (command.Simple words: [{(wc)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2708) fd: -1 arg_word: {($ Id.VSub_DollarName '$f')} ) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2711) fd:-1 arg_word:{(x1)}) ] ) (command.Simple words: [{(wc)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:2716) fd:-1 arg_word:{(x)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2719) fd:-1 arg_word:{(x2)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x1)} {(x2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2731) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2737) ) ] spids: [2722 2733] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(sort)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2752) ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2758) fd:-1 arg_word:{(x)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2761) fd: -1 here_begin: {(END)} here_end_span_id: 2770 stdin_parts: [('demit 10\n') ('epitonic 40\n') ('apoop 20\n') ('bibelot 3\n') ('comate 4\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2773) fd:-1 arg_word:{(y)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2776) fd: -1 here_begin: {(END)} here_end_span_id: 2785 stdin_parts: [('apoop 20\n') ('bibelot 3\n') ('comate 4\n') ('demit 10\n') ('epitonic 40\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2788) fd:-1 arg_word:{(z)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2791) fd: -1 here_begin: {(END)} here_end_span_id: 2800 stdin_parts: [('epitonic 40\n') ('demit 10\n') ('comate 4\n') ('bibelot 3\n') ('apoop 20\n')] ) ] ) (command.Simple words: [{(sort)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:2803) fd:-1 arg_word:{(x)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2806) fd:-1 arg_word:{(x1)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(x1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2818) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2824) ) ] spids: [2809 2820] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(sort)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2839) ) ] ) (command.Simple words: [{(sort)} {(-r)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:2847) fd:-1 arg_word:{(x1)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2850) fd:-1 arg_word:{(x2)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x2)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2862) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2868) ) ] spids: [2853 2864] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(sort)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2883) ) ] ) (command.Pipeline children: [ (command.Simple words: [{(sort)} {(Id.Lit_Other '+') (1)} {(-n)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2894) fd: -1 arg_word: {(x)} ) ] ) (command.Simple words: [{(head)} {(-1)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2902) fd: -1 arg_word: {(y)} ) ] ) ] negated: F ) (command.Simple words: [{(echo)} {(DQ ('bibelot 3'))}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2911) fd:-1 arg_word:{(z)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(z)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2923) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2929) ) ] spids: [2914 2925] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(sort)} {(test)} {(4)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2944) ) ] ) (command.Simple words: [{(tail)} {(-1)} {(f1)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:2958) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {(special)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2970) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:2976) ) ] spids: [2961 2972] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(tail)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2991) ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:3001) fd:-1 arg_word:{(x)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:3004) fd: -1 here_begin: {(END)} here_end_span_id: 3021 stdin_parts: [ ('a d\n') ('b e\n') ('c f\n') ('a c\n') ('p z\n') ('k p\n') ('a k\n') ('a b\n') ('b c\n') ('c d\n') ('d e\n') ('e f\n') ('f k\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3024) fd: -1 arg_word: {(answer)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:3027) fd: -1 here_begin: {(END)} here_end_span_id: 3040 stdin_parts: [('a\n') ('b\n') ('c\n') ('d\n') ('e\n') ('f\n') ('k\n') ('p\n') ('z\n')] ) ] ) (command.Simple words: [{(tsort)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:3043) fd:-1 arg_word:{(x)}) (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:3046) fd:-1 arg_word:{(y)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(y)} {(answer)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3058) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3064) ) ] spids: [3049 3060] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(tsort)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3079) ) ] ) (C {(cp)} {($ Id.VSub_DollarName '$f')} {(x)}) (C {(uue)} {(x)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-s)} {(x.uue)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3104) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3110) ) ] spids: [3097 3106] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(uue/uud)} {(test)} {(1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3125) ) ] ) (C {(rm)} {(x)}) (C {(uud)} {(x.uue)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3146) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3152) ) ] spids: [3137 3148] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(uue/uud)} {(test)} {(2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3167) ) ] ) (command.Simple words: [{(compress)} {(-fc)} {(x)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:3178) fd:-1 arg_word:{(x.Z)}) (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:3181) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(uue)} {(x.Z)}) (C {(rm)} {(x)} {(x.Z)}) (C {(uud)} {(x.uue)}) (command.Simple words: [{(compress)} {(-cd)} {(x.Z)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:3204) fd:-1 arg_word:{(x)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cmp)} {(-s)} {(x)} {($ Id.VSub_DollarName '$f')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3216) ) ] action: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3222) ) ] spids: [3207 3218] ) ] else_action: [ (command.Sentence child: (C {(echo)} {(Error)} {(on)} {(uue/uud)} {(test)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3237) ) ] ) (C {(cd)} {(..)}) (C {(rm)} {(-rf)} {(DIR_SH1)}) (C {(echo)} {(ok)}) ] )