(command.CommandList children: [ (C {(Id.KW_Set set)} {(-o)} {(nounset)}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (C {(Id.KW_Set set)} {(-o)} {(errexit)}) (C {(source)} {(test/common.sh)}) (command.ShFunction name: osh-to-oil body: (command.BraceGroup children: [(C {($ Id.VSub_DollarName '$OSH')} {(--fix)} {(DQ ($ Id.VSub_At '$@'))})] ) ) (command.ShFunction name: osh0-oil3 body: (command.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: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:97) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:100))} here_end_span_id: 110 stdin_parts: [('echo one "$@" two\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:103) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:106))} here_end_span_id: 112 stdin_parts: [('echo one @Argv two\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:121) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:124))} here_end_span_id: 134 stdin_parts: [('echo one $* "__$*__" $@ two\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:127) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:130))} here_end_span_id: 136 stdin_parts: [('echo one $ifsjoin(Argv) "__$ifsjoin(Argv)__" $ifsjoin(Argv) two\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:141) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:144))} here_end_span_id: 154 stdin_parts: [('echo $? $#\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:147) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:150))} here_end_span_id: 156 stdin_parts: [('echo $Status $Argc\n')] ) ] ) ] ) ) (command.ShFunction name: unquote-subs body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:169) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:172))} here_end_span_id: 182 stdin_parts: [('echo "$1" "$foo"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:175) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:178))} here_end_span_id: 184 stdin_parts: [('echo $1 $foo\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:189) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:192))} here_end_span_id: 202 stdin_parts: [('echo "${foo}"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:195) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:198))} here_end_span_id: 204 stdin_parts: [('echo $(foo)\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:209) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:212))} here_end_span_id: 222 stdin_parts: [('echo "$(echo hi)"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:215) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:218))} here_end_span_id: 224 stdin_parts: [('echo $[echo hi]\n')] ) ] ) ] ) ) (command.ShFunction name: special-vars body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:245) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:248))} here_end_span_id: 258 stdin_parts: [('echo ${?} ${#} ${@}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:251) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:254))} here_end_span_id: 260 stdin_parts: [('echo $(Status) $(len(Argv)) @Argv\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:274) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:277))} here_end_span_id: 287 stdin_parts: [('echo $9 $10 ${10} ${11}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:280) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:283))} here_end_span_id: 289 stdin_parts: [('echo $9 $10 $10 $11 # Rule is changed\n')] ) ] ) ] ) ) (command.ShFunction name: arg-array body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:323) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:326))} here_end_span_id: 336 stdin_parts: [('echo $@ $* "$@" "$*" "__$@__" "__$*__"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:329) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:332))} here_end_span_id: 338 stdin_parts: [('echo $Status $len(Argv) @Argv\n')] ) ] ) ] ) ) (command.ShFunction name: bracket-ops body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:351) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:354))} here_end_span_id: 364 stdin_parts: [('echo ${a[1]} ${a[@]} ${PIPESTATUS[@]} ${BASH_REMATCH[@]}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:357) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:360))} here_end_span_id: 366 stdin_parts: [('echo $a[1] @a $PipeStatus @Match\n')] ) ] ) ] ) ) (command.ShFunction name: prefix-ops body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:382) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:385))} here_end_span_id: 395 stdin_parts: [('echo ${#s} ${#a[@]}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:388) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:391))} here_end_span_id: 397 stdin_parts: [('echo $len(s) $len(a)\n')] ) ] ) ] ) ) (command.ShFunction name: suffix-ops body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:410) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:413))} here_end_span_id: 423 stdin_parts: [('echo ${s:-3} ${s##suffix}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:416) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:419))} here_end_span_id: 425 stdin_parts: [("echo $(s or 3) $s.trimRight('suffix')\n")] ) ] ) ] ) ) (command.ShFunction name: slice body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:438) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:441))} here_end_span_id: 451 stdin_parts: [('echo ${a:1:2} ${a[@]:1:2}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:444) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:447))} here_end_span_id: 453 stdin_parts: [('echo $a[1:3] @a[1:3]\n')] ) ] ) ] ) ) (command.ShFunction name: patsub body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:472) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:475))} here_end_span_id: 485 stdin_parts: [('echo ${s/foo/bar} ${s//foo/bar}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:478) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:481))} here_end_span_id: 487 stdin_parts: [("echo $s.replace('foo', 'bar') $s.replace('foo', 'bar', :ALL)\n")] ) ] ) ] ) ) (command.ShFunction name: simple-command body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:500) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:503))} here_end_span_id: 513 stdin_parts: [('echo hi\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:506) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:509))} here_end_span_id: 515 stdin_parts: [('echo hi\n')] ) ] ) ] ) ) (command.ShFunction name: line-breaks body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:528) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:531))} here_end_span_id: 543 stdin_parts: [('echo one \\\n') (' two three \\\n') (' four\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:534) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:537))} here_end_span_id: 547 stdin_parts: [('echo one \\\n') (' two three \\\n') (' four\n')] ) ] ) ] ) ) (command.ShFunction name: bracket-builtin body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:560) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:563))} here_end_span_id: 573 stdin_parts: [('[ ! -z "$foo" ] || die\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:566) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:569))} here_end_span_id: 575 stdin_parts: [('test ! -z $foo || die\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:580) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:583))} here_end_span_id: 595 stdin_parts: [('if [ "$foo" -eq 3 ]; then\n') (' echo yes\n') ('fi\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:586) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:589))} here_end_span_id: 599 stdin_parts: [('if test $foo -eq 3 {\n') (' echo yes\n') ('}\n')] ) ] ) ] ) ) (command.ShFunction name: builtins body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:612) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:615))} here_end_span_id: 625 stdin_parts: [('. lib.sh\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:618) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:621))} here_end_span_id: 627 stdin_parts: [('source lib.sh\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:632) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:635))} here_end_span_id: 645 stdin_parts: [('[ -f lib.sh ] && . lib.sh\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:638) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:641))} here_end_span_id: 647 stdin_parts: [('test -f lib.sh && source lib.sh\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:668) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:671))} here_end_span_id: 681 stdin_parts: [('set -o errexit\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:674) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:677))} here_end_span_id: 683 stdin_parts: [('setoption +errexit\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:688) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:691))} here_end_span_id: 703 stdin_parts: [("echo '\\n'\n") ("echo -e '\\n'\n") ("echo -e -n '\\n'\n")] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:694) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:697))} here_end_span_id: 707 stdin_parts: [("echo '\\\\n'\n") ("echo '\\n'\n") ("write '\\n'\n")] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:712) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:715))} here_end_span_id: 725 stdin_parts: [("eval 'echo $?'\n")] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:718) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:721))} here_end_span_id: 727 stdin_parts: [("oshEval('echo $?') # call into osh!\n")] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:732) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:735))} here_end_span_id: 745 stdin_parts: [('exec 1>&2 # stdout to stderr from now on\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:738) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:741))} here_end_span_id: 747 stdin_parts: [('redir !1 > !2\n')] ) ] ) ] ) ) (command.ShFunction name: export-readonly body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:774) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:777))} here_end_span_id: 788 stdin_parts: [('export FOO\n') ('export BAR=bar\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:780) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:783))} here_end_span_id: 792 stdin_parts: [('setenv FOO\n') ("BAR = 'bar'\n") ('setenv BAR\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:797) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:800))} here_end_span_id: 811 stdin_parts: [('readonly FOO\n') ('readonly BAR=bar\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:803) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:806))} here_end_span_id: 814 stdin_parts: [('freeze FOO\n') ("BAR = 'bar'\n")] ) ] ) ] ) ) (command.ShFunction name: redirect body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:827) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:830))} here_end_span_id: 840 stdin_parts: [('cat >out.txt <in.txt\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:833) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:836))} here_end_span_id: 842 stdin_parts: [('cat >out.txt <in.txt\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:847) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:850))} here_end_span_id: 860 stdin_parts: [('cat >out.txt 2> err.txt\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:853) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:856))} here_end_span_id: 862 stdin_parts: [('cat >out.txt !2 > err.txt\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:867) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:870))} here_end_span_id: 880 stdin_parts: [('echo "error message" >& 2 \n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:873) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:876))} here_end_span_id: 882 stdin_parts: [('echo "error message" > !2 \n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:887) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:890))} here_end_span_id: 900 stdin_parts: [('echo "error message" 1>&2 \n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:893) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:896))} here_end_span_id: 902 stdin_parts: [('echo "error message" !1 > !2 \n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:907) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:910))} here_end_span_id: 920 stdin_parts: [('cat >${out} <${in}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:913) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:916))} here_end_span_id: 922 stdin_parts: [('cat >$(out) <$(in)\n')] ) ] ) ] ) ) (command.ShFunction name: here-doc body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:936) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:939))} here_end_span_id: 951 stdin_parts: [('cat <<ONE\n') ('echo $hi\n') ('ONE\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:942) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:945))} here_end_span_id: 955 stdin_parts: [('cat << """\n') ('echo $hi\n') ('"""\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:960) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:963))} here_end_span_id: 975 stdin_parts: [("cat <<'ONE'\n") ('single quoted\n') ('ONE\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:966) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:969))} here_end_span_id: 979 stdin_parts: [("cat << '''\n") ('single quoted\n') ("'''\n")] ) ] ) ] ) ) (command.ShFunction name: more-env body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:997) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1000))} here_end_span_id: 1012 stdin_parts: [('echo 1\n') ('FOO=bar BAR=baz echo 2\n') ('echo 2\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1003) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1006))} here_end_span_id: 1016 stdin_parts: [('echo 1\n') ('env FOO=bar BAR=baz echo 2\n') ('echo 2\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1021) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1024))} here_end_span_id: 1034 stdin_parts: [('FOO="${bar}" BAR="$(echo hi)" echo 2\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1027) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1030))} here_end_span_id: 1036 stdin_parts: [('env FOO=$(bar) BAR=$[echo hi] echo 2\n')] ) ] ) ] ) ) (command.ShFunction name: assign-common body: (command.BraceGroup children: [ (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'foo=bar spam="$var"' span_id:1058))} ) (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'readonly foo=bar spam="${var}"' span_id:1069))} ) (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'export foo=bar spam="${var}/const"' span_id:1080))} ) (C {(osh-to-oil)} {(--fix)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'f() { foo=bar spam=${var:-default}; }' span_id:1096))} ) (C {(osh-to-oil)} {(--fix)} {(-c)} { (SQ (Token id: Id.Lit_Chars val: 'f() { local foo=bar spam=eggs; foo=mutated; g=new; }' span_id: 1107 ) ) } ) ] ) ) (command.ShFunction name: assign body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1142) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1145))} here_end_span_id: 1155 stdin_parts: [('local foo=$(basename $1)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1148) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1151))} here_end_span_id: 1157 stdin_parts: [('var foo = $[basename $1]\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1159) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1166) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1169))} here_end_span_id: 1179 stdin_parts: [('local one=1 two three=3\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1172) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1175))} here_end_span_id: 1181 stdin_parts: [("one = '1', two = '', three = '3'\n")] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1186) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1189))} here_end_span_id: 1200 stdin_parts: [('myStr=one\n') ('readonly myConstStr=two\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1192) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1195))} here_end_span_id: 1203 stdin_parts: [("var myStr = 'hi'\n") ("myConstStr = 'hi'\n")] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1208) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1211))} here_end_span_id: 1224 stdin_parts: [ ('f() {\n') (' local myStr=one\n') (' readonly myConstStr=two\n') ('}\n') ] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1214) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1217))} here_end_span_id: 1229 stdin_parts: [ ('proc f {\n') (" var myStr = 'hi'\n") (" myConstStr = 'hi'\n") ('}\n') ] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1234) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1237))} here_end_span_id: 1250 stdin_parts: [ ('f() {\n') (' local myStr=$1\n') (' readonly myConstStr=$((1 + 2))\n') ('}\n') ] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1240) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1243))} here_end_span_id: 1255 stdin_parts: [ ('proc f {\n') (' var myStr = $1\n') (' myConstStr = $(1 + 2)\n') ('}\n') ] ) ] ) ] ) ) (command.ShFunction name: array-literal body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1268) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1271))} here_end_span_id: 1281 stdin_parts: [('a=(1 2 3)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1274) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1277))} here_end_span_id: 1283 stdin_parts: [('var a = [1 2 3]\n')] ) ] ) ] ) ) (command.ShFunction name: pipeline body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1296) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1299))} here_end_span_id: 1309 stdin_parts: [('ls | sort | uniq -c | sort -n -r\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1302) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1305))} here_end_span_id: 1311 stdin_parts: [('ls | sort | uniq -c | sort -n -r\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1371) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1376) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1379))} here_end_span_id: 1389 stdin_parts: [('! echo hi | wc\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1382) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1385))} here_end_span_id: 1391 stdin_parts: [('not -- echo hi | wc\n')] ) ] ) ] ) ) (command.ShFunction name: and-or body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1404) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1407))} here_end_span_id: 1417 stdin_parts: [('ls && echo "$@" || die "foo"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1410) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1413))} here_end_span_id: 1419 stdin_parts: [('ls && echo @Argv || die "foo"\n')] ) ] ) ] ) ) (command.ShFunction name: posix-func body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1432) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1435))} here_end_span_id: 1451 stdin_parts: [ ('func1() {\n') (' echo func1\n') (' func2()\n') (' {\n') (' echo func2\n') (' }\n') ('}\n') ] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1438) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1441))} here_end_span_id: 1459 stdin_parts: [ ('proc func1 {\n') (' echo func1\n') (' proc func2\n') (' {\n') (' echo func2\n') (' }\n') ('}\n') ] ) ] ) ] ) ) (command.ShFunction name: subshell-func body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1472) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1475))} here_end_span_id: 1487 stdin_parts: [('subshell-func() (\n') (' echo subshell\n') (')\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1478) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1481))} here_end_span_id: 1493 stdin_parts: [ ('proc subshell-func {\n') (' shell { \n') (' echo subshell\n') (' }\n') ('}\n') ] ) ] ) ] ) ) (command.ShFunction name: ksh-func body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1506) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1509))} 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.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1512) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1515))} here_end_span_id: 1533 stdin_parts: [ ('proc func1 { # no parens\n') (' echo func1\n') (' proc func2\n') (' {\n') (' echo func2\n') (' }\n') ('}\n') ] ) ] ) ] ) ) (command.ShFunction name: for-loop body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1546) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1549))} 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.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1552) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1555))} here_end_span_id: 1567 stdin_parts: [('for x in [a b c \\\n') (' d e f] {\n') (' echo $x\n') ('}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1572) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1575))} 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.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1578) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1581))} here_end_span_id: 1595 stdin_parts: [('for x in [a b c \\\n') (' d e f]\n') ('{\n') (' echo $x\n') ('}\n')] ) ] ) ] ) ) (command.ShFunction name: empty-for-loop body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1608) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1611))} here_end_span_id: 1624 stdin_parts: [('for x in \n') ('do\n') (' echo $x\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1614) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1617))} here_end_span_id: 1629 stdin_parts: [('for x in []\n') ('{\n') (' echo $x\n') ('}\n')] ) ] ) ] ) ) (command.ShFunction name: args-for-loop body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1642) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1645))} here_end_span_id: 1657 stdin_parts: [('for x; do\n') (' echo $x\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1648) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1651))} here_end_span_id: 1661 stdin_parts: [('for x in @Argv {\n') (' echo $x\n') ('}\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1672) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1684) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1687))} here_end_span_id: 1700 stdin_parts: [('for x\n') ('do\n') (' echo $x\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1690) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1693))} here_end_span_id: 1705 stdin_parts: [('for x in @Argv\n') ('{\n') (' echo $x\n') ('}\n')] ) ] ) ] ) ) (command.ShFunction name: while-loop body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1718) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1721))} here_end_span_id: 1733 stdin_parts: [('while read line; do\n') (' echo $line\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1724) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1727))} here_end_span_id: 1737 stdin_parts: [('while read line {\n') (' echo $line\n') ('}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1742) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1745))} here_end_span_id: 1758 stdin_parts: [('while read \\\n') (' line; do\n') (' echo $line\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1748) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1751))} here_end_span_id: 1763 stdin_parts: [('while read \\\n') (' line {\n') (' echo $line\n') ('}\n')] ) ] ) ] ) ) (command.ShFunction name: if_ body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1776) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1779))} here_end_span_id: 1791 stdin_parts: [('if true; then\n') (' echo yes\n') ('fi\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1782) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1785))} here_end_span_id: 1795 stdin_parts: [('if true {\n') (' echo yes\n') ('}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1800) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1803))} here_end_span_id: 1816 stdin_parts: [('if true\n') ('then\n') (' echo yes\n') ('fi\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1806) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1809))} here_end_span_id: 1821 stdin_parts: [('if true\n') ('{\n') (' echo yes\n') ('}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1826) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1829))} 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.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1832) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1835))} 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') ] ) ] ) ] ) ) (command.ShFunction name: case_ body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1870) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1873))} 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.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1876) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1879))} 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') ] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1904) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1907))} here_end_span_id: 1921 stdin_parts: [ ('case "$var" in\n') (' *)\n') (' echo foo\n') (' echo bar # no dsemi\n') ('esac\n') ] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1910) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1913))} here_end_span_id: 1928 stdin_parts: [ ('matchstr $var {\n') (' * {\n') (' echo foo\n') (' echo bar # no dsemi\n') (' }\n') ('}\n') ] ) ] ) ] ) ) (command.ShFunction name: subshell body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1941) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1944))} here_end_span_id: 1954 stdin_parts: [('(echo hi;)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1947) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1950))} here_end_span_id: 1956 stdin_parts: [('shell {echo hi;}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1961) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1964))} here_end_span_id: 1974 stdin_parts: [('(echo hi)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1967) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1970))} here_end_span_id: 1976 stdin_parts: [('shell {echo hi}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1981) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:1984))} here_end_span_id: 1994 stdin_parts: [('(echo hi; echo bye)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:1987) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:1990))} here_end_span_id: 1996 stdin_parts: [('shell {echo hi; echo bye}\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2001) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2004))} here_end_span_id: 2014 stdin_parts: [('( (echo hi; echo bye ) )\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2007) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2010))} here_end_span_id: 2016 stdin_parts: [('shell { shell {echo hi; echo bye } }\n')] ) ] ) ] ) ) (command.ShFunction name: brace-group body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2029) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2032))} here_end_span_id: 2042 stdin_parts: [('{ echo hi; }\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2035) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2038))} here_end_span_id: 2044 stdin_parts: [('do { echo hi; }\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2049) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2052))} here_end_span_id: 2062 stdin_parts: [('{ echo hi; echo bye; }\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2055) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2058))} here_end_span_id: 2064 stdin_parts: [('do { echo hi; echo bye; }\n')] ) ] ) ] ) ) (command.ShFunction name: fork body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2077) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2080))} here_end_span_id: 2090 stdin_parts: [('sleep 1&\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2083) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2086))} here_end_span_id: 2092 stdin_parts: [('fork sleep 1\n')] ) ] ) ] ) ) (command.ShFunction name: var-sub body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2105) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2108))} here_end_span_id: 2118 stdin_parts: [('echo $foo\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2111) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2114))} here_end_span_id: 2120 stdin_parts: [('echo $foo\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2125) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2128))} here_end_span_id: 2138 stdin_parts: [('echo $foo ${bar} "__${bar}__"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2131) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2134))} here_end_span_id: 2140 stdin_parts: [('echo $foo $(bar) "__$(bar)__"\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2145) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2148))} here_end_span_id: 2158 stdin_parts: [('echo ${foo:-default}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2151) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2154))} here_end_span_id: 2160 stdin_parts: [("echo $(foo or 'default')\n")] ) ] ) ] ) ) (command.ShFunction name: command-sub body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2173) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2176))} here_end_span_id: 2187 stdin_parts: [('echo $(echo hi)\n') ('echo `echo hi`\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2179) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2182))} here_end_span_id: 2190 stdin_parts: [('echo $[echo hi]\n') ('echo $[echo hi]\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2195) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2198))} here_end_span_id: 2208 stdin_parts: [('echo "__$(echo hi)__"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2201) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2204))} here_end_span_id: 2210 stdin_parts: [('echo "__$[echo hi]__"\n')] ) ] ) ] ) ) (command.ShFunction name: proc-sub body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2224) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2227))} here_end_span_id: 2237 stdin_parts: [('echo <(echo hi) >(echo hi)\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2230) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2233))} here_end_span_id: 2239 stdin_parts: [('echo $<[echo hi] $>[echo hi]\n')] ) ] ) ] ) ) (command.ShFunction name: arith-sub body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2252) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2255))} here_end_span_id: 2265 stdin_parts: [('echo __$(( 1+ 2 ))__\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2258) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2261))} here_end_span_id: 2267 stdin_parts: [('echo __$( 1+ 2 )__\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2269) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2279) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2282))} here_end_span_id: 2292 stdin_parts: [('echo $[ 1+ 2 ]\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2285) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2288))} here_end_span_id: 2294 stdin_parts: [('echo $( 1+ 2 )\n')] ) ] ) ] ) ) (command.ShFunction name: arith-ops body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2339) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2342))} here_end_span_id: 2352 stdin_parts: [('echo $(( a > 0 ? 2**3 : 3/2 ))\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2345) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2348))} here_end_span_id: 2354 stdin_parts: [('echo $(( 2^3 if a > 0 else 3 div 2 ))\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2359) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2362))} here_end_span_id: 2372 stdin_parts: [('echo $(( a << 1 | b & 1 ))\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2365) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2368))} here_end_span_id: 2374 stdin_parts: [('echo $(( a << 1 .| b .& 1 ))\n')] ) ] ) ] ) ) (command.ShFunction name: dbracket body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2390) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2393))} here_end_span_id: 2403 stdin_parts: [('[[ -d / ]] && echo "is dir"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2396) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2399))} here_end_span_id: 2405 stdin_parts: [('isDir(\'/\') && echo "is dir"\n')] ) ] ) ] ) ) (command.ShFunction name: escaped-literal body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2418) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2421))} here_end_span_id: 2431 stdin_parts: [('echo \\$ \\ \\n "\\$" "\\n"\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2424) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2427))} here_end_span_id: 2433 stdin_parts: [('echo \'$\' \' \' \'n\' "\\$" "\\n"\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2436) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2445) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2448))} here_end_span_id: 2458 stdin_parts: [('echo \\$\\ \\$\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2451) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2454))} here_end_span_id: 2460 stdin_parts: [("echo '$ $'\n")] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2469) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2472))} here_end_span_id: 2483 stdin_parts: [('echo \\\n') (' hi\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2475) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2478))} here_end_span_id: 2486 stdin_parts: [('echo \\\n') (' hi\n')] ) ] ) ] ) ) (command.ShFunction name: words body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2507) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2510))} here_end_span_id: 2521 stdin_parts: [("echo foo'bar'\n") ("echo foo'bar'$baz\n")] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2513) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2516))} here_end_span_id: 2524 stdin_parts: [("echo 'foobar'\n") ('echo "foobar$baz"\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2537) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2540))} here_end_span_id: 2550 stdin_parts: [("echo ~/'name with spaces'\n")] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2543) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2546))} here_end_span_id: 2552 stdin_parts: [('echo "$HOME/name with spaces"\n')] ) ] ) ] ) ) (command.ShFunction name: time-block body: (command.BraceGroup children: [ (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2565) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2568))} here_end_span_id: 2578 stdin_parts: [('time ls\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2571) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2574))} here_end_span_id: 2580 stdin_parts: [('time ls\n')] ) ] ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2585) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2588))} here_end_span_id: 2600 stdin_parts: [('time while false; do\n') (' echo $i\n') ('done\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2591) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2594))} here_end_span_id: 2604 stdin_parts: [('time while false {\n') (' echo $i\n') ('}\n')] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2607) ) (command.Simple words: [{(osh0-oil3)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2616) fd: -1 here_begin: {(SQ (Token id:Id.Lit_Chars val:OSH span_id:2619))} here_end_span_id: 2632 stdin_parts: [('time {\n') (' echo one\n') (' echo two\n') ('}\n')] ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'3<<' span_id:2622) fd: 3 here_begin: {(SQ (Token id:Id.Lit_Chars val:OIL span_id:2625))} here_end_span_id: 2637 stdin_parts: [('time {\n') (' echo one\n') (' echo two\n') ('}\n')] ) ] ) ] ) ) (C {(readonly)} {(-a)} {(Id.Lit_VarLike 'PASSING=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:2646) 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: (command.BraceGroup children: [ (C {(run-all)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PASSING span_id:2755) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) ] ) ) (command.ShFunction name: run-for-release body: (command.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 '$@'))}) ] )