(command.CommandList children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'Usage: '> ($ Id.VSub_Number 0) <' temperature[F|C|K]\n'> <'where the suffix:\n'> <' F indicates input is in Fahrenheit (default)\n'> <' C indicates input is in Celsius\n'> <' K indicates input is in Kelvin\n'> ] ) ) (Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>}) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [14 28] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'unit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'unit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unit='> name:unit) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/[-[:digit:]]*//g'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'[:lower:]'>)} {(SQ <'[:upper:]'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'temp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'temp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'temp='> name:temp) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/[^-[:digit:]]*//g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name unit> var_name: unit suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{<F>}) right: <Id.Right_DollarBrace '}'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <F> pattern: (pat.Words words:[{<F>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'farn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'farn='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'farn='> name:farn) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName temp))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cels='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cels='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cels='> name:cels) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2;('> ($ Id.VSub_DollarName farn) <' - 32) / 1.8'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'kelv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'kelv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kelv='> name:kelv) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2;'> ($ Id.VSub_DollarName cels) <' + 273.15'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cels='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cels='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cels='> name:cels) op: assign_op.Equal rhs: {($ Id.VSub_DollarName temp)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'kelv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'kelv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kelv='> name:kelv) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2;'> ($ Id.VSub_DollarName cels) <' + 273.15'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'farn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'farn='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'farn='> name:farn) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2;(1.8 * '> ($ Id.VSub_DollarName cels) <') + 32'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <K> pattern: (pat.Words words:[{<K>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'kelv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'kelv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kelv='> name:kelv) op: assign_op.Equal rhs: {($ Id.VSub_DollarName temp)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cels='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cels='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cels='> name:cels) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2; '> ($ Id.VSub_DollarName kelv) <' - 273.15'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'farn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'farn='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'farn='> name:farn) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'scale=2; (1.8 * '> ($ Id.VSub_DollarName cels) <') + 32'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Given temperature unit is not supported'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Fahrenheit = '> ($ Id.VSub_DollarName farn))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Celsius = '> ($ Id.VSub_DollarName cels))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Kelvin = '> ($ Id.VSub_DollarName kelv))}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )