(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:QEMU_IMAGE) op: assign_op.Equal rhs: {<'linuxkit/qemu'> <Id.Lit_Colon ':'> <4563d58e97958f4941fbef9e74cabc08bd402144> <Id.Lit_Splice '@sha256'> <Id.Lit_Colon ':'> <b2db0b13ba1cbb6b48218f088fe0a4d860e1db2c4c6381b5416536f48a612230> } spids: [4] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-t>} {<0>} {<-a>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<docker>} {<run>} {<-i>} {<--rm>} {(DQ ($ Id.VSub_DollarName '$QEMU_IMAGE'))}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_QMark '$?')} ) ] spids: [16 36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [63] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE2) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [66] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CMDLINE) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [69] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FILE'))} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD') <'/moby'>)} spids: [84] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) ) } spids: [91] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) ) } spids: [100] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName '$FILE'))} {<-a>} {<-f>} {($ Id.VSub_DollarName '$DIR') <'/'> ($ Id.VSub_DollarName '$BASE') <-initrd.img>} {<-a>} {<-f>} {($ Id.VSub_DollarName '$DIR') <'/'> ($ Id.VSub_DollarName '$BASE') <-bzImage>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$DIR') <'/'> ($ Id.VSub_DollarName '$BASE') <-initrd.img>} spids: [144] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE2) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$DIR') <'/'> ($ Id.VSub_DollarName '$BASE') <-bzImage>} spids: [151] ) ] ) ] spids: [109 141] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {<echo>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) (C {<grep>} {<-q>} {(SQ <'^/'>)})] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD') <'/'> ($ Id.VSub_DollarName '$FILE'))} spids: [178] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FILE2'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$FILE2'))}) (C {<grep>} {<-q>} {(SQ <'^/'>)}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD') <'/'> ($ Id.VSub_DollarName '$FILE2'))} spids: [220] ) ] ) ] ) ] spids: [185 199] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$CMDLINE'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$CMDLINE'))}) (C {<grep>} {<-q>} {(SQ <'^/'>)}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CMDLINE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$PWD') <'/'> ($ Id.VSub_DollarName '$CMDLINE'))} spids: [264] ) ] ) ] ) ] spids: [229 243] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-c>} {(DQ <'/dev/kvm'>)} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEVKVM) op: assign_op.Equal rhs: {(DQ <'--device=/dev/kvm'>)} spids: [291] ) ] ) ] spids: [274 288] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {(DQ ($ Id.VSub_DollarName '$FILE'))}) ) } spids: [298] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MOUNTS) op: assign_op.Equal rhs: {(DQ <'-v '> ($ Id.VSub_DollarName '$FILE') <':/tmp/'> ($ Id.VSub_DollarName '$BASE'))} spids: [307] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE2) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {(DQ ($ Id.VSub_DollarName '$FILE2'))}) ) } spids: [315] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASE3) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {(DQ ($ Id.VSub_DollarName '$CMDLINE'))}) ) } spids: [324] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$FILE2'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MOUNTS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$MOUNTS') <' -v '> ($ Id.VSub_DollarName '$FILE2') <':/tmp/'> ($ Id.VSub_DollarName '$BASE2') ) } spids: [348] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$CMDLINE'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MOUNTS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$MOUNTS') <' -v '> ($ Id.VSub_DollarName '$CMDLINE') <':/tmp/'> ($ Id.VSub_DollarName '$BASE3') ) } spids: [371] ) ] ) ] ) (C {<docker>} {<run>} {<-it>} {<--rm>} {($ Id.VSub_DollarName '$MOUNTS')} {($ Id.VSub_DollarName '$DEVKVM')} {(DQ ($ Id.VSub_DollarName '$QEMU_IMAGE'))} ) ] )