(command.CommandList children: [ (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (C {<set>} {<-o>} {<errexit>}) (C {<readonly>} {<Id.Lit_VarLike 'DASH='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<which>} {<dash>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<echo>} {<'/bin/sh'>}) ] ) ) } ) (C {<readonly>} {<Id.Lit_VarLike 'BASH='> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<bash>})) } ) (C {<readonly>} {<Id.Lit_VarLike 'MKSH='> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<mksh>})) } ) (C {<readonly>} {<Id.Lit_VarLike 'ZSH='> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<zsh>})) } ) (C {<readonly>} {<Id.Lit_VarLike 'BUSYBOX_ASH='> <'_tmp/shells/ash'>}) (C {<readonly>} {<Id.Lit_VarLike 'OSH_PYTHON='> (braced_var_sub token: <Id.VSub_Name OSH_PYTHON> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<bin> <Id.Lit_Slash '/'> <osh>} ) ) } ) (C {<readonly>} {<Id.Lit_VarLike 'OSH_OVM='> (braced_var_sub token: <Id.VSub_Name OSH_OVM> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<_bin> <Id.Lit_Slash '/'> <osh>} ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-e>} {($ Id.VSub_DollarName '$OSH_OVM')}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<readonly>} {<Id.Lit_VarLike 'OSH='> (DQ ($ Id.VSub_DollarName '$OSH_PYTHON') <' '> ($ Id.VSub_DollarName '$OSH_OVM')) } ) ] spids: [106 115] ) ] else_action: [(C {<readonly>} {<Id.Lit_VarLike 'OSH='> (DQ ($ Id.VSub_DollarName '$OSH_PYTHON'))})] ) (C {<readonly>} {<Id.Lit_VarLike 'REF_SHELLS='> (sh_array_literal left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName '$DASH')} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} ] ) } ) (command.ShFunction name: link-busybox-ash body: (BraceGroup children: [ (C {<mkdir>} {<-p>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName '$BUSYBOX_ASH')}) ) } ) (C {<ln>} {<-s>} {<-f>} {<--verbose>} {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<which>} {<busybox>})))} {($ Id.VSub_DollarName '$BUSYBOX_ASH')} ) ] ) ) (command.ShFunction name: install-shells body: (BraceGroup children: [ (C {<sudo>} {<apt-get>} {<install>} {<busybox-static>} {<mksh>} {<zsh>}) (C {<link-busybox-ash>}) ] ) ) (command.ShFunction name: check-shells body: (BraceGroup children: [ (command.ForEach iter_name: sh iter_words: [ { (DQ (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-e>} {($ Id.VSub_DollarName '$sh')}) (BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ <'ERROR: '> ($ Id.VSub_DollarName '$sh') <' does not exist'>)} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-x>} {($ Id.VSub_DollarName '$sh')}) (BraceGroup children: [ (command.Sentence child: (C {<echo>} { (DQ <'ERROR: '> ($ Id.VSub_DollarName '$sh') <' isn\'t executable'>) } ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] ) ] ) ] ) ) ] ) ) (command.ShFunction name: _wget body: (BraceGroup children: [ (C {<wget>} {<--no-clobber>} {<--directory>} {<'_tmp/src'>} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.ShFunction name: download-shell-source body: (BraceGroup children: [ (C {<mkdir>} {<-p>} {<'_tmp/src'>}) (C {<_wget>} {<https> <Id.Lit_Colon ':'> <'//ftp.gnu.org/gnu/bash/bash-4.4.tar.gz'>}) (C {<_wget>} {<https> <Id.Lit_Colon ':'> <'//www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R54.tgz'>} ) (C {<_wget>} {<https> <Id.Lit_Colon ':'> <'//downloads.sourceforge.net/project/zsh/zsh/5.3.1/zsh-5.3.1.tar.xz'> } ) ] ) ) (command.ShFunction name: maybe-show body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> ($ Id.VSub_Number '$1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-e>} {($ Id.VSub_DollarName '$path')}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'--- '> ($ Id.VSub_DollarName '$path') <' ---'>)}) (C {<cat>} {($ Id.VSub_DollarName '$path')}) (C {<echo>}) ] spids: [448 457] ) ] ) ] ) ) (command.ShFunction name: version-text body: (BraceGroup children: [ (C {<date>}) (C {<echo>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-d>} {<.git>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'branch='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--abbrev-ref>} {<HEAD>}) ) } ) (C {<local>} {<Id.Lit_VarLike 'hash='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {($ Id.VSub_DollarName '$branch')}) ) } ) (C {<echo>} { (DQ <'oil repo: '> ($ Id.VSub_DollarName '$hash') <' on branch '> ($ Id.VSub_DollarName '$branch') ) } ) ] spids: [496 505] ) ] else_action: [(C {<echo>} {(DQ <'(not running from git repository)'>)})] ) (C {<echo>}) (command.ForEach iter_name: bin iter_words: [{($ Id.VSub_DollarName '$OSH')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <' '> ($ Id.VSub_DollarName '$bin') <' --version'> ) } ) (C {($ Id.VSub_DollarName '$bin')} {<--version>}) (C {<echo>}) ] ) ) (command.Simple words: [{<python>} {<--version>}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (C {<echo>}) (command.Pipeline children: [(C {($ Id.VSub_DollarName '$BASH')} {<--version>}) (C {<head>} {<-n>} {<1>})] negated: F ) (C {<echo>}) (command.Pipeline children: [(C {($ Id.VSub_DollarName '$ZSH')} {<--version>}) (C {<head>} {<-n>} {<1>})] negated: F ) (C {<echo>}) (command.Pipeline children: [(C {<dpkg>} {<-s>} {<dash>}) (C {<egrep>} {(SQ <'^Package|Version'>)})] negated: F ) (C {<echo>}) (command.Pipeline children: [(C {<dpkg>} {<-s>} {<mksh>}) (C {<egrep>} {(SQ <'^Package|Version'>)})] negated: F ) (C {<echo>}) (command.Pipeline children: [ (BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [(C {<busybox>}) (C {<true>})] ) terminator: <Id.Op_Semi _> ) ] ) (C {<head>} {<-n>} {<1>}) ] negated: F ) (C {<echo>}) (C {<maybe-show>} {<'/etc/debian_version'>}) (C {<maybe-show>} {<'/etc/lsb-release'>}) ] ) ) (command.ShFunction name: sh-spec body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'this_dir='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_Number '$0')}) ) } ) (C {<pwd>}) ] ) ) } ) (C {<local>} {<Id.Lit_VarLike 'tmp_env='> ($ Id.VSub_DollarName '$this_dir') <'/../_tmp/spec-tmp'>} ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$tmp_env')}) (C {<'test/sh_spec.py'>} {<--tmp-env>} {($ Id.VSub_DollarName '$tmp_env')} {<--path-env>} { (DQ ($ Id.VSub_DollarName '$this_dir') <'/../spec/bin:'> ($ Id.VSub_DollarName '$PATH')) } {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: trace-var-sub body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'out='> <'_tmp/coverage'>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out')}) (C {<python>} {<-m>} {<trace>} {<--trackcalls>} {<-C>} {($ Id.VSub_DollarName '$out')} {<'test/sh_spec.py'>} {<'spec/var-sub.test.sh'>} {($ Id.VSub_DollarName '$DASH')} {($ Id.VSub_DollarName '$BASH')} {(DQ ($ Id.VSub_At '$@'))} ) (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$out')}) (C {<head>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'> <.cover>}) ] ) ) (command.ShFunction name: all body: (BraceGroup children: [(C {<'test/spec-runner.sh'>} {<all-parallel>} {(DQ ($ Id.VSub_At '$@'))})] ) ) (command.ShFunction name: smoke body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/smoke.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: osh-only body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/osh-only.test.sh'>} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: bugs body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/bugs.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: blog1 body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/blog1.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: blog2 body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/blog2.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: blog-other1 body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/blog-other1.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: alias body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/alias.test.sh'>} {<--osh-failures-allowed>} {<10>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: comments body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/comments.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: word-split body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/word-split.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: word-eval body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/word-eval.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: assign body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/assign.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: background body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/background.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: subshell body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/subshell.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: quote body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/quote.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: loop body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/loop.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: case_ body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/case_.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: if_ body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/if_.test.sh'>} {<--osh-failures-allowed>} {<1>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtins body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtins.test.sh'>} {<--osh-failures-allowed>} {<1>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-io body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-io.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtins2 body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtins2.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-dirs body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-dirs.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-vars body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-vars.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-getopts body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-getopts.test.sh'>} {<--osh-failures-allowed>} {<1>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-test body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-test.test.sh'>} {<--osh-failures-allowed>} {<1>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-trap body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-trap.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtin-bash body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtin-bash.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: builtins-special body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/builtins-special.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: command-parsing body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/command-parsing.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: func-parsing body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/func-parsing.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: func body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/func.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: glob body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/glob.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: arith body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/arith.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: command-sub body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/command-sub.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: command_ body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/command_.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: pipeline body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/pipeline.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: explore-parsing body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/explore-parsing.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: parse-errors body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/parse-errors.test.sh'>} {<--osh-failures-allowed>} {<5>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: here-doc body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/here-doc.test.sh'>} {<--osh-failures-allowed>} {<1>} {<--range>} {<0-30>} {(braced_var_sub token:<Id.VSub_Name REF_SHELLS> bracket_op:(bracket_op.WholeArray op_id:Id.Lit_At))} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: redirect body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/redirect.test.sh'>} {<--osh-failures-allowed>} {<5>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: posix body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/posix.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: special-vars body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/special-vars.test.sh'>} {<--osh-failures-allowed>} {<4>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: introspect body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/introspect.test.sh'>} {<--osh-failures-allowed>} {<3>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: tilde body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/tilde.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-op-test body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-op-test.test.sh'>} {<--osh-failures-allowed>} {<5>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-op-other body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-op-other.test.sh'>} {<--osh-failures-allowed>} {<2>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-op-strip body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-op-strip.test.sh'>} {<--osh-failures-allowed>} {<1>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-sub body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-sub.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-num body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-num.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-sub-quote body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-sub-quote.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: sh-options body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/sh-options.test.sh'>} {<--osh-failures-allowed>} {<3>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: xtrace body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/xtrace.test.sh'>} {<--osh-failures-allowed>} {<5>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: strict-options body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/strict-options.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: errexit body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/errexit.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: errexit-strict body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/errexit-strict.test.sh'>} { (braced_var_sub token: <Id.VSub_Name REF_SHELLS> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {($ Id.VSub_DollarName '$BUSYBOX_ASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: arith-context body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/arith-context.test.sh'>} {<--osh-failures-allowed>} {<3>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: array body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/array.test.sh'>} {<--osh-failures-allowed>} {<8>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: array-compat body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/array-compat.test.sh'>} {<--osh-failures-allowed>} {<7>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: type-compat body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/type-compat.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: append body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/append.test.sh'>} {<--osh-failures-allowed>} {<4>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: assoc body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/assoc.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: assoc-zsh body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/assoc-zsh.test.sh'>} {($ Id.VSub_DollarName '$ZSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: dbracket body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/dbracket.test.sh'>} {<--osh-failures-allowed>} {<2>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: dparen body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/dparen.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: brace-expansion body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/brace-expansion.test.sh'>} {<--osh-failures-allowed>} {<12>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: regex body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/regex.test.sh'>} {<--osh-failures-allowed>} {<3>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: process-sub body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/process-sub.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$ZSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: extended-glob body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/extended-glob.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: var-ref body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/var-ref.test.sh'>} {<--osh-failures-allowed>} {<5>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: let body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/let.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: for-expr body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/for-expr.test.sh'>} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$OSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (command.ShFunction name: shell-grammar body: (BraceGroup children: [ (C {<sh-spec>} {<'spec/shell-grammar.test.sh'>} {($ Id.VSub_DollarName '$BASH')} {($ Id.VSub_DollarName '$MKSH')} {($ Id.VSub_DollarName '$ZSH')} {(DQ ($ Id.VSub_At '$@'))} ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )