(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:compress) op:Equal rhs:{(DQ (bzip2))} spids:[20])] spids: [20] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:inclist) op: Equal rhs: { (DQ (/tmp/backup.inclist.) (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(Lit_Other '+') (Lit_Other '%') (d) (Lit_Other '%') (m) (Lit_Other '%') (y)} ) ] ) left_token: <Left_CommandSub '$('> spids: [31 41] ) ) } spids: [28] ) ] spids: [28] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: { (DQ (/tmp/backup.) (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(Lit_Other '+') (Lit_Other '%') (d) (Lit_Other '%') (m) (Lit_Other '%') (y)} ) ] ) left_token: <Left_CommandSub '$('> spids: [48 58] ) (.bz2) ) } spids: [45] ) ] spids: [45] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tsfile) op: Equal rhs: {(DQ ($ VSub_Name '$HOME') (/.backup.timestamp))} spids: [63] ) ] spids: [63] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:btype) op:Equal rhs:{(DQ (incremental))} spids:[70])] spids: [70] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:noinc) op:Equal rhs:{(0)} spids:[79])] spids: [79] ) (C {(trap)} {(DQ ('/bin/rm -f ') ($ VSub_Name '$inclist'))} {(EXIT)}) (FuncDef name: usageQuit body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(DQ (EOF))} here_end_span_id: 118 stdin_parts: [ ('Usage: $0 [-o output] [-i|-f] [-n]\n') (' -o lets you specify an alternative backup file/device,\n') (' -i is an incremental, -f is a full backup, and -n prevents\n') (' updating the timestamp when an incremental backup is done.\n') ] ) (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)}) ] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [100] ) spids: [96 99] ) (WhileUntil keyword: <KW_While while> cond: [(Sentence child:(C {(getopts)} {(DQ ('o:ifn'))} {(arg)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$opt'))} arms: [ (case_arm pat_list: [{(o)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: {(DQ ($ VSub_Name '$OPTARG'))} spids: [158] ) ] spids: [158] ) terminator: <Op_Semi ';'> ) ] spids: [154 156 164 16777215] ) (case_arm pat_list: [{(i)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:btype) op: Equal rhs: {(DQ (incremental))} spids: [174] ) ] spids: [174] ) terminator: <Op_Semi ';'> ) ] spids: [170 172 180 16777215] ) (case_arm pat_list: [{(f)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:btype) op: Equal rhs: {(DQ (full))} spids: [187] ) ] spids: [187] ) terminator: <Op_Semi ';'> ) ] spids: [183 185 193 16777215] ) (case_arm pat_list: [{(n)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:noinc) op: Equal rhs: {(1)} spids: [200] ) ] spids: [200] ) terminator: <Op_Semi ';'> ) ] spids: [196 198 204 16777215] ) (case_arm pat_list: [{(Lit_Other '?')}] action: [(C {(usageQuit)})] spids: [207 209 213 16777215] ) ] spids: [145 151 216] ) ] spids: [142 218] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$OPTIND')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [223 232] ) } ) (C {(echo)} {(DQ ('Doing ') ($ VSub_Name '$btype') (' backup, saving output to ') ($ VSub_Name '$output'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:timestamp) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (SQ <'%m%d%I%M'>)})] ) left_token: <Left_CommandSub '$('> spids: [247 254] ) ) } spids: [245] ) ] spids: [245] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$btype'))} {(Lit_Other '=')} {(DQ (incremental))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$tsfile')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ("Error: can't do an incremental backup: no timestamp file"))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 301] ) ] spids: [16777215 319] ) (Pipeline children: [ (C {(find)} {($ VSub_Name '$HOME')} {(-depth)} {(-type)} {(f)} {(-newer)} {($ VSub_Name '$tsfile')} {(-user)} { (BracedVarSub token: <VSub_Name USER> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(LOGNAME)}) spids: [338 342] ) } ) (C {(pax)} {(-w)} {(-x)} {(tar)}) (SimpleCommand words: [{($ VSub_Name '$compress')}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_Name '$output')} ) ] ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:failure) op: Equal rhs: {(DQ ($ VSub_QMark '$?'))} spids: [365] ) ] spids: [365] ) ] spids: [16777215 283] ) ] else_action: [ (Pipeline children: [ (C {(find)} {($ VSub_Name '$HOME')} {(-depth)} {(-type)} {(f)} {(-user)} { (BracedVarSub token: <VSub_Name USER> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(LOGNAME)}) spids: [385 389] ) } ) (C {(pax)} {(-w)} {(-x)} {(tar)}) (SimpleCommand words: [{($ VSub_Name '$compress')}] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Name '$output')})] ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:failure) op: Equal rhs: {(DQ ($ VSub_QMark '$?'))} spids: [412] ) ] spids: [412] ) ] spids: [370 417] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$noinc'))} {(Lit_Other '=')} {(DQ (0))} {(-a)} {(DQ ($ VSub_Name '$failure'))} {(Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(touch)} {(-t)} {($ VSub_Name '$timestamp')} {($ VSub_Name '$tsfile')})] spids: [16777215 450] ) ] spids: [16777215 461] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] )