(command.CommandList children: [ (C {(hash)} {(-r)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:10) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) } spids: [8] ) ] ) (command.ShFunction name: usage body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'ret=') (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:27) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)}) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$ret')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:45) ) ] action: [ (command.Simple words: [{(exec)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'3>&' span_id:52) fd: 3 arg_word: {(1)} ) ] ) ] spids: [33 47] ) ] else_action: [ (command.Simple words: [{(exec)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'3>&' span_id:61) fd: 3 arg_word: {(2)} ) ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:70) fd: -1 here_begin: {(EoF)} here_end_span_id: 81 stdin_parts: [(${ Id.VSub_Name PROG) (' path-to-keyfile\n')] ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:73) fd: -1 arg_word: {(3)} ) ] ) (command.Simple words: [{(exec)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'3>&' span_id:85) fd: 3 arg_word: {(-)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:89) arg_word: {(${ Id.VSub_Name ret)} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keypath) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:101) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$HOME') (Id.Lit_Slash /) (.ssh) (Id.Lit_Slash /) (id_rsa.bcpc) } ) ) ) } spids: [98] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:distroot) op: assign_op.Equal rhs: {(/var/www/cobbler/pub/keys)} spids: [111] ) ] ) (command.Pipeline children: [(C {(yes)}) (C {(ssh-keygen)} {(-N)} {(SQ )} {(-f)} {(DQ (${ Id.VSub_Name keypath))})] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name SUDO_UID))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:148) ) ] action: [(C {(chown)} {(DQ (${ Id.VSub_Name SUDO_UID))} {(DQ (${ Id.VSub_Name keypath))})] spids: [134 150] ) ] ) (C {(install)} {(-D)} {(DQ (${ Id.VSub_Name keypath) (.pub))} {(DQ (${ Id.VSub_Name distroot) (/root))} ) ] )