(command.CommandList children: [ (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (C {<set>} {<-o>} {<errexit>}) (C {<source>} {<'test/common.sh'>}) (command.ShFunction name: osh-to-oil body: (BraceGroup children: [(C {($ Id.VSub_DollarName '$OSH')} {<--fix>} {(DQ ($ Id.VSub_At '$@'))})] ) ) (command.ShFunction name: osh0-oil3 body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<osh-to-oil>} {(DQ ($ Id.VSub_At '$@'))}) (C {<diff>} {<-u>} {<'/dev/fd/3'>} {<->}) ] negated: F ) (C {<fail>}) ] ) ] ) ) (command.ShFunction name: args-vars body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 110 stdin_parts: [<'echo one "$@" two\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 112 stdin_parts: [<'echo one @Argv two\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 134 stdin_parts: [<'echo one $* "__$*__" $@ two\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 136 stdin_parts: [ <'echo one $ifsjoin(Argv) "__$ifsjoin(Argv)__" $ifsjoin(Argv) two\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 154 stdin_parts: [<'echo $? $#\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 156 stdin_parts: [<'echo $Status $Argc\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: unquote-subs body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 182 stdin_parts: [<'echo "$1" "$foo"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 184 stdin_parts: [<'echo $1 $foo\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 202 stdin_parts: [<'echo "${foo}"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 204 stdin_parts: [<'echo $(foo)\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 222 stdin_parts: [<'echo "$(echo hi)"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 224 stdin_parts: [<'echo $[echo hi]\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: special-vars body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 258 stdin_parts: [<'echo ${?} ${#} ${@}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 260 stdin_parts: [<'echo $(Status) $(len(Argv)) @Argv\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 287 stdin_parts: [<'echo $9 $10 ${10} ${11}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 289 stdin_parts: [<'echo $9 $10 $10 $11 # Rule is changed\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: arg-array body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 336 stdin_parts: [<'echo $@ $* "$@" "$*" "__$@__" "__$*__"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 338 stdin_parts: [<'echo $Status $len(Argv) @Argv\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: bracket-ops body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 364 stdin_parts: [<'echo ${a[1]} ${a[@]} ${PIPESTATUS[@]} ${BASH_REMATCH[@]}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 366 stdin_parts: [<'echo $a[1] @a $PipeStatus @Match\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: prefix-ops body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 395 stdin_parts: [<'echo ${#s} ${#a[@]}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 397 stdin_parts: [<'echo $len(s) $len(a)\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: suffix-ops body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 423 stdin_parts: [<'echo ${s:-3} ${s##suffix}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 425 stdin_parts: [<'echo $(s or 3) $s.trimRight(\'suffix\')\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: slice body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 451 stdin_parts: [<'echo ${a:1:2} ${a[@]:1:2}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 453 stdin_parts: [<'echo $a[1:3] @a[1:3]\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: patsub body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 485 stdin_parts: [<'echo ${s/foo/bar} ${s//foo/bar}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 487 stdin_parts: [ <'echo $s.replace(\'foo\', \'bar\') $s.replace(\'foo\', \'bar\', :ALL)\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: simple-command body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 513 stdin_parts: [<'echo hi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 515 stdin_parts: [<'echo hi\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: line-breaks body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 543 stdin_parts: [<'echo one \\\n'> <' two three \\\n'> <' four\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 547 stdin_parts: [<'echo one \\\n'> <' two three \\\n'> <' four\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: bracket-builtin body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 573 stdin_parts: [<'[ ! -z "$foo" ] || die\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 575 stdin_parts: [<'test ! -z $foo || die\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 595 stdin_parts: [<'if [ "$foo" -eq 3 ]; then\n'> <' echo yes\n'> <'fi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 599 stdin_parts: [<'if test $foo -eq 3 {\n'> <' echo yes\n'> <'}\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: builtins body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 625 stdin_parts: [<'. lib.sh\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 627 stdin_parts: [<'source lib.sh\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 645 stdin_parts: [<'[ -f lib.sh ] && . lib.sh\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 647 stdin_parts: [<'test -f lib.sh && source lib.sh\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 681 stdin_parts: [<'set -o errexit\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 683 stdin_parts: [<'setoption +errexit\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 703 stdin_parts: [<'echo \'\\n\'\n'> <'echo -e \'\\n\'\n'> <'echo -e -n \'\\n\'\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 707 stdin_parts: [<'echo \'\\\\n\'\n'> <'echo \'\\n\'\n'> <'write \'\\n\'\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 725 stdin_parts: [<'eval \'echo $?\'\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 727 stdin_parts: [<'oshEval(\'echo $?\') # call into osh!\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 745 stdin_parts: [<'exec 1>&2 # stdout to stderr from now on\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 747 stdin_parts: [<'redir !1 > !2\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: export-readonly body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 788 stdin_parts: [<'export FOO\n'> <'export BAR=bar\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 792 stdin_parts: [<'setenv FOO\n'> <'BAR = \'bar\'\n'> <'setenv BAR\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 811 stdin_parts: [<'readonly FOO\n'> <'readonly BAR=bar\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 814 stdin_parts: [<'freeze FOO\n'> <'BAR = \'bar\'\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: redirect body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 840 stdin_parts: [<'cat >out.txt <in.txt\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 842 stdin_parts: [<'cat >out.txt <in.txt\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 860 stdin_parts: [<'cat >out.txt 2> err.txt\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 862 stdin_parts: [<'cat >out.txt !2 > err.txt\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 880 stdin_parts: [<'echo "error message" >& 2 \n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 882 stdin_parts: [<'echo "error message" > !2 \n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 900 stdin_parts: [<'echo "error message" 1>&2 \n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 902 stdin_parts: [<'echo "error message" !1 > !2 \n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 920 stdin_parts: [<'cat >${out} <${in}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 922 stdin_parts: [<'cat >$(out) <$(in)\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: here-doc body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 951 stdin_parts: [<'cat <<ONE\n'> <'echo $hi\n'> <'ONE\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 955 stdin_parts: [<'cat << """\n'> <'echo $hi\n'> <'"""\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 975 stdin_parts: [<'cat <<\'ONE\'\n'> <'single quoted\n'> <'ONE\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 979 stdin_parts: [<'cat << \'\'\'\n'> <'single quoted\n'> <'\'\'\'\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: more-env body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1012 stdin_parts: [<'echo 1\n'> <'FOO=bar BAR=baz echo 2\n'> <'echo 2\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1016 stdin_parts: [<'echo 1\n'> <'env FOO=bar BAR=baz echo 2\n'> <'echo 2\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1034 stdin_parts: [<'FOO="${bar}" BAR="$(echo hi)" echo 2\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1036 stdin_parts: [<'env FOO=$(bar) BAR=$[echo hi] echo 2\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: assign-common body: (BraceGroup children: [ (C {<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'foo=bar spam="$var"'>)}) (C {<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'readonly foo=bar spam="${var}"'>)}) (C {<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'export foo=bar spam="${var}/const"'>)}) (C {<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'f() { foo=bar spam=${var:-default}; }'>)}) (C {<osh-to-oil>} {<--fix>} {<-c>} {(SQ <'f() { local foo=bar spam=eggs; foo=mutated; g=new; }'>)} ) ] ) ) (command.ShFunction name: assign body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1155 stdin_parts: [<'local foo=$(basename $1)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1157 stdin_parts: [<'var foo = $[basename $1]\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1179 stdin_parts: [<'local one=1 two three=3\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1181 stdin_parts: [<'one = \'1\', two = \'\', three = \'3\'\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1200 stdin_parts: [<'myStr=one\n'> <'readonly myConstStr=two\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1203 stdin_parts: [<'var myStr = \'hi\'\n'> <'myConstStr = \'hi\'\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1224 stdin_parts: [ <'f() {\n'> <' local myStr=one\n'> <' readonly myConstStr=two\n'> <'}\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1229 stdin_parts: [ <'proc f {\n'> <' var myStr = \'hi\'\n'> <' myConstStr = \'hi\'\n'> <'}\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1250 stdin_parts: [ <'f() {\n'> <' local myStr=$1\n'> <' readonly myConstStr=$((1 + 2))\n'> <'}\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1255 stdin_parts: [ <'proc f {\n'> <' var myStr = $1\n'> <' myConstStr = $(1 + 2)\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: array-literal body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1281 stdin_parts: [<'a=(1 2 3)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1283 stdin_parts: [<'var a = [1 2 3]\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: pipeline body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1309 stdin_parts: [<'ls | sort | uniq -c | sort -n -r\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1311 stdin_parts: [<'ls | sort | uniq -c | sort -n -r\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1389 stdin_parts: [<'! echo hi | wc\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1391 stdin_parts: [<'not -- echo hi | wc\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: and-or body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1417 stdin_parts: [<'ls && echo "$@" || die "foo"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1419 stdin_parts: [<'ls && echo @Argv || die "foo"\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: posix-func body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1451 stdin_parts: [ <'func1() {\n'> <' echo func1\n'> <' func2()\n'> <' {\n'> <' echo func2\n'> <' }\n'> <'}\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1459 stdin_parts: [ <'proc func1 {\n'> <' echo func1\n'> <' proc func2\n'> <' {\n'> <' echo func2\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: subshell-func body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1487 stdin_parts: [<'subshell-func() (\n'> <' echo subshell\n'> <')\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1493 stdin_parts: [ <'proc subshell-func {\n'> <' shell { \n'> <' echo subshell\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: ksh-func body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1525 stdin_parts: [ <'function func1 { # no parens\n'> <' echo func1\n'> <' function func2()\n'> <' {\n'> <' echo func2\n'> <' }\n'> <'}\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1533 stdin_parts: [ <'proc func1 { # no parens\n'> <' echo func1\n'> <' proc func2\n'> <' {\n'> <' echo func2\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: for-loop body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1562 stdin_parts: [<'for x in a b c \\\n'> <' d e f; do\n'> <' echo $x\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1567 stdin_parts: [<'for x in [a b c \\\n'> <' d e f] {\n'> <' echo $x\n'> <'}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1589 stdin_parts: [ <'for x in a b c \\\n'> <' d e f\n'> <'do\n'> <' echo $x\n'> <'done\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1595 stdin_parts: [ <'for x in [a b c \\\n'> <' d e f]\n'> <'{\n'> <' echo $x\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: empty-for-loop body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1624 stdin_parts: [<'for x in \n'> <'do\n'> <' echo $x\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1629 stdin_parts: [<'for x in []\n'> <'{\n'> <' echo $x\n'> <'}\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: args-for-loop body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1657 stdin_parts: [<'for x; do\n'> <' echo $x\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1661 stdin_parts: [<'for x in @Argv {\n'> <' echo $x\n'> <'}\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1700 stdin_parts: [<'for x\n'> <'do\n'> <' echo $x\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1705 stdin_parts: [<'for x in @Argv\n'> <'{\n'> <' echo $x\n'> <'}\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: while-loop body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1733 stdin_parts: [<'while read line; do\n'> <' echo $line\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1737 stdin_parts: [<'while read line {\n'> <' echo $line\n'> <'}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1758 stdin_parts: [<'while read \\\n'> <' line; do\n'> <' echo $line\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1763 stdin_parts: [<'while read \\\n'> <' line {\n'> <' echo $line\n'> <'}\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: if_ body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1791 stdin_parts: [<'if true; then\n'> <' echo yes\n'> <'fi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1795 stdin_parts: [<'if true {\n'> <' echo yes\n'> <'}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1816 stdin_parts: [<'if true\n'> <'then\n'> <' echo yes\n'> <'fi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1821 stdin_parts: [<'if true\n'> <'{\n'> <' echo yes\n'> <'}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1847 stdin_parts: [ <'if true; then\n'> <' echo yes\n'> <'elif false; then\n'> <' echo elif\n'> <'elif spam; then\n'> <' echo elif\n'> <'else\n'> <' echo no\n'> <'fi\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1857 stdin_parts: [ <'if true {\n'> <' echo yes\n'> <'} elif false {\n'> <' echo elif\n'> <'} elif spam {\n'> <' echo elif\n'> <'} else {\n'> <' echo no\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: case_ body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1890 stdin_parts: [ <'case $var in\n'> <' foo|bar)\n'> <' [ -f foo ] && echo file\n'> <' ;;\n'> <' *)\n'> <' echo default\n'> <' ;;\n'> <'esac\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1899 stdin_parts: [ <'matchstr $var {\n'> <' foo|bar {\n'> <' test -f foo && echo file\n'> <' }\n'> <' * {\n'> <' echo default\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1921 stdin_parts: [ <'case "$var" in\n'> <' *)\n'> <' echo foo\n'> <' echo bar # no dsemi\n'> <'esac\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1928 stdin_parts: [ <'matchstr $var {\n'> <' * {\n'> <' echo foo\n'> <' echo bar # no dsemi\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: subshell body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1954 stdin_parts: [<'(echo hi;)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1956 stdin_parts: [<'shell {echo hi;}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1974 stdin_parts: [<'(echo hi)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1976 stdin_parts: [<'shell {echo hi}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 1994 stdin_parts: [<'(echo hi; echo bye)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 1996 stdin_parts: [<'shell {echo hi; echo bye}\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2014 stdin_parts: [<'( (echo hi; echo bye ) )\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2016 stdin_parts: [<'shell { shell {echo hi; echo bye } }\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: brace-group body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2042 stdin_parts: [<'{ echo hi; }\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2044 stdin_parts: [<'do { echo hi; }\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2062 stdin_parts: [<'{ echo hi; echo bye; }\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2064 stdin_parts: [<'do { echo hi; echo bye; }\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: fork body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2090 stdin_parts: [<'sleep 1&\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2092 stdin_parts: [<'fork sleep 1\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: var-sub body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2118 stdin_parts: [<'echo $foo\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2120 stdin_parts: [<'echo $foo\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2138 stdin_parts: [<'echo $foo ${bar} "__${bar}__"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2140 stdin_parts: [<'echo $foo $(bar) "__$(bar)__"\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2158 stdin_parts: [<'echo ${foo:-default}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2160 stdin_parts: [<'echo $(foo or \'default\')\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: command-sub body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2187 stdin_parts: [<'echo $(echo hi)\n'> <'echo `echo hi`\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2190 stdin_parts: [<'echo $[echo hi]\n'> <'echo $[echo hi]\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2208 stdin_parts: [<'echo "__$(echo hi)__"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2210 stdin_parts: [<'echo "__$[echo hi]__"\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: proc-sub body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2237 stdin_parts: [<'echo <(echo hi) >(echo hi)\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2239 stdin_parts: [<'echo $<[echo hi] $>[echo hi]\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: arith-sub body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2265 stdin_parts: [<'echo __$(( 1+ 2 ))__\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2267 stdin_parts: [<'echo __$( 1+ 2 )__\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2292 stdin_parts: [<'echo $[ 1+ 2 ]\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2294 stdin_parts: [<'echo $( 1+ 2 )\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: arith-ops body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2352 stdin_parts: [<'echo $(( a > 0 ? 2**3 : 3/2 ))\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2354 stdin_parts: [<'echo $(( 2^3 if a > 0 else 3 div 2 ))\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2372 stdin_parts: [<'echo $(( a << 1 | b & 1 ))\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2374 stdin_parts: [<'echo $(( a << 1 .| b .& 1 ))\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: dbracket body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2403 stdin_parts: [<'[[ -d / ]] && echo "is dir"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2405 stdin_parts: [<'isDir(\'/\') && echo "is dir"\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: escaped-literal body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2431 stdin_parts: [<'echo \\$ \\ \\n "\\$" "\\n"\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2433 stdin_parts: [<'echo \'$\' \' \' \'n\' "\\$" "\\n"\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2458 stdin_parts: [<'echo \\$\\ \\$\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2460 stdin_parts: [<'echo \'$ $\'\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2483 stdin_parts: [<'echo \\\n'> <' hi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2486 stdin_parts: [<'echo \\\n'> <' hi\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: words body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2521 stdin_parts: [<'echo foo\'bar\'\n'> <'echo foo\'bar\'$baz\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2524 stdin_parts: [<'echo \'foobar\'\n'> <'echo "foobar$baz"\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2550 stdin_parts: [<'echo ~/\'name with spaces\'\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2552 stdin_parts: [<'echo "$HOME/name with spaces"\n'>] ) ) ] do_fork: T ) ] ) ) (command.ShFunction name: time-block body: (BraceGroup children: [ (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2578 stdin_parts: [<'time ls\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2580 stdin_parts: [<'time ls\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2600 stdin_parts: [<'time while false; do\n'> <' echo $i\n'> <'done\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2604 stdin_parts: [<'time while false {\n'> <' echo $i\n'> <'}\n'>] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (command.Simple words: [{<osh0-oil3>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <OSH>)} here_end_span_id: 2632 stdin_parts: [<'time {\n'> <' echo one\n'> <' echo two\n'> <'}\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {(SQ <OIL>)} here_end_span_id: 2637 stdin_parts: [<'time {\n'> <' echo one\n'> <' echo two\n'> <'}\n'>] ) ) ] do_fork: T ) ] ) ) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'PASSING='> (sh_array_literal left: <Id.Op_LParen _> words: [ {<simple-command>} {<more-env>} {<line-breaks>} {<redirect>} {<pipeline>} {<and-or>} {<escaped-literal>} {<args-vars>} {<unquote-subs>} {<command-sub>} {<arith-sub>} {<unquote-subs>} {<posix-func>} {<ksh-func>} {<brace-group>} {<subshell>} {<while-loop>} {<if_>} {<case_>} {<for-loop>} {<empty-for-loop>} {<args-for-loop>} {<time-block>} {<bracket-builtin>} ] ) } ) (command.ShFunction name: all-passing body: (BraceGroup children: [ (C {<run-all>} { (DQ (braced_var_sub token: <Id.VSub_Name PASSING> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) ] ) ) (command.ShFunction name: run-for-release body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'out_dir='> <'_tmp/osh2oil'>}) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out_dir')}) (command.Pipeline children: [ (C {<all-passing>}) (C {<tee>} {($ Id.VSub_DollarName '$out_dir') <'/log.txt'>}) ] negated: F ) (C {<echo>} {(DQ <'Wrote '> ($ Id.VSub_DollarName '$out_dir') <'/log.txt'>)}) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )