(FuncDef name: shlib_relToAbsPath body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shlib_path_) op: Equal rhs: {($ VSub_Number '$1')} spids: [47] ) ] spids: [47] ) (AndOr ops: [Op_DPipe] children: [ (Pipeline children: [ (C {(echo)} {(DQ (${ VSub_Name shlib_path_))}) (SimpleCommand words: [{(grep)} {(SQ <'^/'>)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shlib_path_) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick '`'> spids: [83 85] ) (/) (${ VSub_Name shlib_path_) ) } spids: [81] ) ] spids: [81] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shlib_old_) op: Equal rhs: {(${ VSub_Name shlib_path_)} spids: [102] ) ] spids: [102] ) (WhileUntil keyword: <KW_While while> cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shlib_new_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ (${ VSub_Name shlib_old_))}) (C {(sed)} {(SQ <'s/[^/]*\\/\\.\\.\\/*//g;s/\\/\\.\\//\\//'>)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [117 132] ) } spids: [116] ) ] spids: [116] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (${ VSub_Name shlib_old_))} {(Lit_Other '=')} {(DQ (${ VSub_Name shlib_new_))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shlib_old_) op: Equal rhs: {(${ VSub_Name shlib_new_)} spids: [158] ) ] spids: [158] ) ] spids: [113 164] ) ) (C {(echo)} {(DQ (${ VSub_Name shlib_new_))}) (C {(unset)} {(shlib_path_)} {(shlib_old_)} {(shlib_new_)}) ] spids: [44] ) spids: [40 43] )