(CommandList children: [ (FuncDef name: getpassword body: (BraceGroup children: [ (Until cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$password'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$rpassword'))} {(-a)} {(-n)} {(DQ ($ VSub_Name '$password'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Sentence child: (C {(read)} {(-s)} {(-p)} {(DQ ("Enter a password for user '") ($ VSub_Number '$1') ("' : "))} {(password)} ) terminator: <Op_Semi ';'> ) (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[77])] ) (Sentence child: (C {(read)} {(-s)} {(-p)} {(DQ ("Reenter password for user '") ($ VSub_Number '$1') ("' : "))} {(rpassword)} ) terminator: <Op_Semi ';'> ) (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[98])] ) ] spids: [57 102] ) ) (C {(echo)} {(DQ ($ VSub_Name '$password'))}) ] spids: [29] ) spids: [25 28] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pw) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(getpassword)} { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(blah)}) spids: [119 123] ) ) } ) ] ) left_token: <Left_Backtick '`'> spids: [115 125] ) } spids: [114] ) ] spids: [114] ) (C {(echo)} {(DQ ("password is '") ($ VSub_Name '$pw') ("'"))}) ] )