(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ZONECFG='> name:ZONECFG) op: assign_op.Equal rhs: {<'/etc/security/tsol/tnzonecfg'>} spids: [112] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'clearance='> name:clearance) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [115] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'image='> name:image) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [118] ) ] redirects: [] ) (command.ShFunction name: configure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config='> name:config) op: assign_op.Equal rhs: {<'/tmp/zfg.'> ($ Id.VSub_Dollar '$')} spids: [139] ) ] redirects: [] ) (command.Simple words: [{<echo>} {(DQ <'create -F -t SUNWtsoldef'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName config)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'set zonepath=/zone/'> ($ Id.VSub_DollarName zonename))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName config)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <commit>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName config)} ) ] more_env: [] do_fork: T ) (C {<'/usr/sbin/zonecfg'>} {<-z>} {($ Id.VSub_DollarName zonename)} {<-f>} {($ Id.VSub_DollarName config)} ) (C {<rm>} {($ Id.VSub_DollarName config)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: clone body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {<Cloning>} {($ Id.VSub_DollarName zonename)} {<from>} {($ Id.VSub_DollarName image)} {<Id.Lit_TDot ...>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'found='> name:found) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<zoneadm>} {<-z>} {($ Id.VSub_DollarName zonename)} {<list>} {<-p>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [226] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName found)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<true>})] spids: [245 254] ) ] else_action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName zonename) <' is being configured.'>)}) (C {<configure>}) ] redirects: [] ) (C {<'/usr/sbin/zfs'>} {<clone>} {($ Id.VSub_DollarName image)} {<'zone/'> ($ Id.VSub_DollarName zonename)} ) (C {<'/usr/sbin/zoneadm'>} {<-z>} {($ Id.VSub_DollarName zonename)} {<attach>} {<-F>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ForEach iter_names: [label] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<lslabels>} {<-h>} {(DQ ($ Id.VSub_DollarName clearance))}) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zonename='> name:zonename) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<'/bin/grep'>} {($ Id.VSub_DollarName label) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName ZONECFG)} ) (C {<cut>} {<-d>} {(DQ <':'>)} {<-f1>}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [332] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName zonename)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state='> name:state) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<zoneadm>} {<-z>} {($ Id.VSub_DollarName zonename)} {<list>} {<-p>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<cut>} {<-d>} {(DQ <':'>)} {<-f3>}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [369] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName state)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName state)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<configured>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {($ Id.VSub_DollarName zonename)} {<is>} {<already>} {<installed.>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [412 426] ) ] else_action: [] redirects: [] ) ] spids: [400 409] ) ] else_action: [] redirects: [] ) ] spids: [357 366] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zonelabel='> name:zonelabel) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<hextoalabel>} {($ Id.VSub_DollarName label)}) right: <Id.Backtick_Right '`'> ) } spids: [453] ) ] redirects: [] ) (C {<echo>} {<Enter>} {<zone>} {<name>} {<Id.KW_For for>} {($ Id.VSub_DollarName zonelabel)} ) (C {<echo>} {<or>} {<RETURN>} {<to>} {<skip>} {<this>} {<label> <Id.Lit_Colon ':'>}) (C {<read>} {<zonename>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName zonename)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nz='> name:nz) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<'/bin/grep'>} {(DQ <'^'> ($ Id.VSub_DollarName zonename) <':'>)} {($ Id.VSub_DollarName ZONECFG)} ) (C {<cut>} {<-d>} {(DQ <':'>)} {<-f1>}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [509] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName nz)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {($ Id.VSub_DollarName zonename)} {<is>} {<already>} {<used>} {<Id.KW_For for>} {<another>} {<label.>} ) ] spids: [537 546] ) ] else_action: [ (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_DollarName zonename) <':'> ($ Id.VSub_DollarName label) <':0::'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName ZONECFG)} ) ] more_env: [] do_fork: T ) ] redirects: [] ) ] spids: [497 506] ) ] else_action: [ (C {<echo>} {<Skipping>} {<zone>} {<Id.KW_For for>} {($ Id.VSub_DollarName zonelabel)}) (command.ControlFlow token:<Id.ControlFlow_Continue continue>) ] redirects: [] ) ] redirects: [] ) (C {<clone>}) ] ) redirects: [] ) ] )