(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TEST_SH> var_name: TEST_SH suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{(DQ <'/bin/sh'>)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<a_basic_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <a_basic_cmdsub_head> name: a_basic_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(SQ <'Test operation of simple $( ) substitutions'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <a_basic_cmdsub_body> name: a_basic_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Result is true today'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Result is $( true && echo true || echo false ) today'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Result is false today'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Result is $( false && echo true || echo false ) today'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <aaabbbccc>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa$( echo bbb )ccc'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'aaabbb cccddd'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa$( echo bbb ccc )ddd'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'aaabbb cccddd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa$( echo bbb; echo ccc )ddd'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'aaabbb\\ncccddd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo "aaa$( echo bbb; echo ccc )ddd"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'some string\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=$( echo some string ); echo "$X"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'weird; string *\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=$( echo "weird; string *" ); echo "$X"'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words:[{<file-1>} {<file-2>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cp> more_env: [] words: [{<cp>} {<'/dev/null'>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found $( echo * )'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "$( echo * )"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found $('>) (DQ <' echo \'*\' )'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found \\*'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "$('>) (DQ <' echo \'*\' '>) (SQ <')"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found $('>) (DQ <' echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'* )'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found \\*'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "$('>) (DQ <' echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'* )'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<b_basic_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <b_basic_backticks_head> name: b_basic_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(SQ <'Test operation of old style ` ` substitutions'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <b_basic_backticks_body> name: b_basic_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Result is true today'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Result is `true && echo true || echo false` today'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Result is false today'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Result is `false && echo true || echo false` today'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <aaabbbccc>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa` echo bbb `ccc'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'aaabbb cccddd'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa` echo bbb ccc `ddd'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'aaabbb cccddd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo aaa` echo bbb; echo ccc `ddd'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'aaabbb\\ncccddd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo "aaa` echo bbb; echo ccc `ddd"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'some string\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=` echo some string `; echo "$X"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'weird; string *\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=` echo "weird; string *" `; echo "$X"'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words:[{<file-1>} {<file-2>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cp> more_env: [] words: [{<cp>} {<'/dev/null'>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found ` echo * `'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "` echo * `"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found `'>) (DQ <' echo \'*\' '>) (SQ <'`'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found \\*'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "`'>) (DQ <' echo \'*\' '>) (SQ <'`"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found file-1 file-2'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found `'>) (DQ <' echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'* '> ) (SQ <'`'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'Found \\*'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo Found "`'>) (DQ <' echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'* '> ) (SQ <'`"'>) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<c_nested_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <c_nested_cmdsub_head> name: c_nested_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Test that cmd substitutions can be nested'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <c_nested_cmdsub_body> name: c_nested_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__foobarbletch__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo __$( echo foo$(echo bar)bletch )__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_abcde_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$(echo a$(echo $(echo b)c$(echo d))e )_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <123454321>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo 1$(echo 2$(echo 3$(echo 4$(echo 5)4)3)2)1'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<d_nested_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <d_nested_backticks_head> name: d_nested_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Tests that old style backtick cmd subs can be nested'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <d_nested_backticks_body> name: d_nested_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__foobarbletch__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo __` echo foo\\`echo bar\\`bletch `__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_abcde_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _`echo a\\`echo \\\\\\`echo b\\\\\\`c\\\\\\`echo d\\\\\\`\\`e `_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <123454321>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ < 'echo 1`echo 2\\`echo 3\\\\\\`echo 4\\\\\\\\\\\\\\`echo 5\\\\\\\\\\\\\\`4\\\\\\`3\\`2`1' > ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<e_perverse_mixing>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <e_perverse_mixing_head> name: e_perverse_mixing_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks various mixed new and old style cmd substitutions'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <e_perverse_mixing_body> name: e_perverse_mixing_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__foobarbletch__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo __$( echo foo`echo bar`bletch )__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__foobarbletch__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo __` echo foo$(echo bar)bletch `__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_abcde_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$(echo a`echo $(echo b)c$(echo d)`e )_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_abcde_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _`echo a$(echo \\`echo b\\`c\\`echo d\\`)e `_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <12345654321>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo 1`echo 2$(echo 3\\`echo 4\\\\\\`echo 5$(echo 6)5\\\\\\`4\\`3)2`1'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<f_redirect_in_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <f_redirect_in_cmdsub_head> name: f_redirect_in_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that redirects work in command substitutions'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <f_redirect_in_cmdsub_body> name: f_redirect_in_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<file>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$( echo a$( echo b > file )a)_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <b>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat file'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aba_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$( echo a$( cat < file )a)_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$( echo a$( echo d >> file )a)_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'b\\nd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat file'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<match> <Id.Lit_Colon ':'> (SQ <'not error'>)} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _$( echo a$( echo not error >&2 )a)_'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<g_redirect_in_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <g_redirect_in_backticks_head> name: g_redirect_in_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that redirects work in old style cmd sub'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <g_redirect_in_backticks_body> name: g_redirect_in_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<file>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _` echo a\\` echo b > file \\`a`_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <b>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat file'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aba_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _` echo a\\` cat < file \\`a`_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _` echo a\\` echo d >> file \\`a`_'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'b\\nd\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat file'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <_aa_>)} {<-e>} {<match> <Id.Lit_Colon ':'> (SQ <'not error'>)} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo _` echo a\\` echo not error >&2 \\`a`_'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<h_vars_in_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <h_vars_in_cmdsub_head> name: h_vars_in_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Check that variables work in command substitutions'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <h_vars_in_cmdsub_body> name: h_vars_in_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo __$( echo ${X} )__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo __$( echo "${X}" )__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "__$( echo ${X} )__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "__$( echo "${X}" )__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'a\\n\\nb\\n\\nc\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(DQ <'for X in a \'\' b \'\' c'>) (SQ <'; do echo $( echo "$X" ); done'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__acd__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=; unset Y; echo "__$( echo a${X-b}${Y-c}d)__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abcd__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=; unset Y; echo "__$( echo a${X:-b}${Y:-c}d)__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__XYX__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=X; echo "__${X}$( X=Y; echo ${X} )${X}__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__def__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "__$(X=def; echo "${X}" )__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'abcdef\\nabc\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "$X$(X=def; echo ${X} )"; echo $X'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<i_vars_in_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <i_vars_in_backticks_head> name: i_vars_in_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that variables work in old style cmd sub'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <i_vars_in_backticks_body> name: i_vars_in_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo __` echo ${X} `__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo __` echo "${X}" `__'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "__` echo ${X} `__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abc__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "__` echo \\"${X}\\" `__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'a\\n\\nb\\n\\nc\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(DQ <'for X in a \'\' b \'\' c'>) (SQ <'; do echo $( echo "$X" ); done'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__acd__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=; unset Y; echo "__$( echo a${X-b}${Y-c}d)__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__abcd__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=; unset Y; echo "__$( echo a${X:-b}${Y:-c}d)__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <__XYX__>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=X; echo "__${X}$( X=Y; echo ${X} )${X}__"'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'abcdef\\nabc\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=abc; echo "$X`X=def; echo \\"${X}\\" `";echo $X'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<j_cmdsub_in_varexpand>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <j_cmdsub_in_varexpand_head> name: j_cmdsub_in_varexpand_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that command sub can be used in var expansion'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <j_cmdsub_in_varexpand_body> name: j_cmdsub_in_varexpand_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <foo>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X+$(echo foo)}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <set>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X-$(echo foo)}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<bar>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <set>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X-$(echo foo > bar)}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<bar>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'bar should not exist, but does'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X+$(echo foo > bar)}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<bar>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'bar should exist, but does not'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<k_backticks_in_varexpand>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <k_backticks_in_varexpand_head> name: k_backticks_in_varexpand_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that old style cmd sub works in var expansion'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <k_backticks_in_varexpand_body> name: k_backticks_in_varexpand_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <foo>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X+`echo foo`}'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <set>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X-`echo foo`}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<bar>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <set>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X-`echo foo > bar`}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<bar>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'bar should not exist, but does'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=set; echo ${X+`echo foo > bar`}'>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<bar>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'bar should exist, but does not'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<l_arithmetic_in_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <l_arithmetic_in_cmdsub_head> name: l_arithmetic_in_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that arithmetic works in cmd substitutions'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <l_arithmetic_in_cmdsub_body> name: l_arithmetic_in_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'1 + 1 = 2\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo 1 + 1 = $( echo $(( 1 + 1 )) )'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'X * Y = 6\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=2; Y=3; echo X \\* Y = $( echo $(( X * Y )) )'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Y % X = 1\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=2; Y=3; echo Y % X = $( echo $(( $Y % $X )) )'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<m_arithmetic_in_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <m_arithmetic_in_backticks_head> name: m_arithmetic_in_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that arithmetic works in old style cmd sub'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <m_arithmetic_in_backticks_body> name: m_arithmetic_in_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'2 + 3 = 5\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo 2 + 3 = ` echo $(( 2 + 3 )) `'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'X * Y = 6\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=2; Y=3; echo X \\* Y = ` echo $(( X * Y )) `'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Y % X = 1\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'X=2; Y=3; echo Y % X = ` echo $(( $Y % $X )) `'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<n_cmdsub_in_arithmetic>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <n_cmdsub_in_arithmetic_head> name: n_cmdsub_in_arithmetic_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Tests uses of command substitutions in arithmetic'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <n_cmdsub_in_arithmetic_body> name: n_cmdsub_in_arithmetic_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'7\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(( $( echo 3 ) $( echo + ) $( echo 4 ) ))'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'11\\n7\\n18\\n4\\n1\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'for op in + - \\* / %\n'> <'\t\t do\n'> <'\t\t echo $(( $( echo 9 ) $( echo "${op}" ) $( echo 2 ) ))\n'> <'\t\t done'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<o_backticks_in_arithmetic>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <o_backticks_in_arithmetic_head> name: o_backticks_in_arithmetic_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Tests old style cmd sub used in arithmetic'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <o_backticks_in_arithmetic_body> name: o_backticks_in_arithmetic_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'33\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(( `echo 77` `echo -` `echo 44`))'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'14\\n8\\n33\\n3\\n2\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'for op in + - \\* / %\n'> <'\t\t do\n'> <'\t\t echo $((`echo 11``echo "${op}"``echo 3`))\n'> <'\t\t done'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<p_cmdsub_in_heredoc>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <p_cmdsub_in_heredoc_head> name: p_cmdsub_in_heredoc_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that cmdsubs work inside a here document'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <p_cmdsub_in_heredoc_body> name: p_cmdsub_in_heredoc_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'line 1+1\\nline 2\\nline 3\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'cat <<- EOF\n'> <'\t\t\t$( echo line 1 )$( echo +1 )\n'> <'\t\t\t$( echo line 2;echo line 3 )\n'> <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<q_backticks_in_heredoc>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <q_backticks_in_heredoc_head> name: q_backticks_in_heredoc_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that old style cmdsubs work in here docs'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <q_backticks_in_heredoc_body> name: q_backticks_in_heredoc_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had a\\nlittle\\nlamb\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'cat <<- EOF\n'> <'\t\t\t`echo Mary ` `echo had a `\n'> <'\t\t\t` echo little; echo lamb `\n'> <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<r_heredoc_in_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <r_heredoc_in_cmdsub_head> name: r_heredoc_in_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Checks that here docs work inside cmd subs'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <r_heredoc_in_cmdsub_body> name: r_heredoc_in_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had a\\nlittle\\nlamb\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "$( cat <<- \\EOF\n'> <'\t\t\t\tMary had a\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb\n'> <'\t\t\tEOF\n'> <'\t\t\t)"'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had 1\\nlittle\\nlamb\\nMary had 4\\nlittle\\nlambs\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'for N in 1 4; do echo "$( cat <<- EOF\n'> <'\t\t\t\tMary had ${N}\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb$( [ $N -gt 1 ] && echo s )\n'> <'\t\t\tEOF\n'> <'\t\t\t)"; done'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A Calculation:\\n2 * 7 = 14\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "$( cat <<- EOF\n'> <'\t\t\t\tA Calculation:\n'> <'\t\t\t\t\t2 * 7 = $(( 2 * 7 ))\n'> <'\t\t\tEOF\n'> <'\t\t\t)"'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<s_heredoc_in_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <s_heredoc_in_backticks_head> name: s_heredoc_in_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that here docs work inside old style cmd subs'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <s_heredoc_in_backticks_body> name: s_heredoc_in_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had a little lamb\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo ` cat <<- \\EOF\n'> <'\t\t\t\tMary had a\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb\n'> <'\t\t\tEOF\n'> <'\t\t\t`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A Calculation:\\n17 / 3 = 5\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "` cat <<- EOF\n'> <'\t\t\t\tA Calculation:\n'> <'\t\t\t\t\t17 / 3 = $(( 17 / 3 ))\n'> <'\t\t\tEOF\n'> <'\t\t\t`"'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<t_nested_cmdsubs_in_heredoc>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <t_nested_cmdsubs_in_heredoc_head> name: t_nested_cmdsubs_in_heredoc_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks nested command substitutions in here docs'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <t_nested_cmdsubs_in_heredoc_body> name: t_nested_cmdsubs_in_heredoc_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Hello>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<File>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Hello U\\nHelp me!\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'cat <<- EOF\n'> <'\t\t$(cat File) U\n'> <'\t\t$( V=$(cat File); echo "${V%lo}p" ) me!\n'> <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<V>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<V>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<A>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<A>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<R>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<R>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<Value>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<VAR>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'$2.50\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat <<- EOF\n'> <'\t$(Value='>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <'$2.50'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <';eval echo $(eval $(cat V)$(cat A)$(cat R)=\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\$$(cat $(cat V)$(cat A)$(cat R))\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'; eval echo \\$$(set -- *;echo ${3}${1}${2})))\n'> <'\t\tEOF'>) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<u_nested_backticks_in_heredoc>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <u_nested_backticks_in_heredoc_head> name: u_nested_backticks_in_heredoc_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Checks nested old style cmd subs in here docs'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <u_nested_backticks_in_heredoc_body> name: u_nested_backticks_in_heredoc_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Hello>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<File>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Hello U\\nHelp me!\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'cat <<- EOF\n'> <'\t\t`cat File` U\n'> <'\t\t`V=\\`cat File\\`; echo "${V%lo}p" ` me!\n'> <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<V>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<V>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<A>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<A>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<R>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<R>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<Value>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<VAR>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'$5.20\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat <<- EOF\n'> <'\t`Value='>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <'$5.20'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ < ';eval echo \\`eval \\\\\\`cat V\\\\\\`\\\\\\`cat A\\\\\\`\\\\\\`cat R\\\\\\`=\\\\\\' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ < '\\\\\\$\\\\\\`cat \\\\\\\\\\\\\\`cat V\\\\\\\\\\\\\\`\\\\\\\\\\\\\\`cat A\\\\\\\\\\\\\\`\\\\\\\\\\\\\\`cat R\\\\\\\\\\\\\\`\\\\\\`\\\\\\' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ < '; eval echo \\\\\\$\\\\\\`set -- *;echo \\\\\\\\\\${3}\\\\\\\\\\${1}\\\\\\\\\\${2}\\\\\\`\\``\n' > <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<v_cmdsub_paren_tests>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <v_cmdsub__paren_tests_head> name: v_cmdsub__paren_tests_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'tests with cmdsubs containing embedded \')\''>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <v_cmdsub_paren_tests_body> name: v_cmdsub_paren_tests_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A.1\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\tcase x in x) echo A.1;; esac\n'> <'\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A.2\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\tcase x in x) echo A.2;; esac # comment\n'> <'\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A.3\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\tcase x in (x) echo A.3;; esac\n'> <'\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A.4\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\tcase x in (x) echo A.4;; esac # comment\n'> <'\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A.5\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\tcase x in (x) echo A.5\n'> <'\t\t\tesac\n'> <'\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'B: quoted )\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\techo '>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <'B: quoted )'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\n'> <'\t\t)'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'C: comment then closing paren\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\t\techo C: comment then closing paren # )\n'> <'\t\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'D.1: here-doc with )\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\t\tcat <<-\\eof\n'> <'\t\t\t\tD.1: here-doc with )\n'> <'\t\t\t\teof\n'> <'\t\t\t)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'D.3: here-doc with \\()\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\t\tcat <<-\\eof\n'> <'\t\t\t\tD.3: here-doc with \\()\n'> <'\t\t\t\teof\n'> <'\t\t\t)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'E: here-doc terminated with a parenthesis ("academic")\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\tcat <<-\\)\n'> <'\t\t\tE: here-doc terminated with a parenthesis ("academic")\n'> <'\t\t\t)\n'> <'\t\t)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'F.1: here-doc embed with unbal single, back- or doublequote '>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\tcat <<-"eof"\n'> <'\t\tF.1: here-doc embed with unbal single, back- or doublequote '> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\n'> <'\t\t\teof\n'> <'\t\t)'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'F.2: here-doc embed with unbal single, back- or doublequote "\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\tcat <<-"eof"\n'> <'\t\tF.2: here-doc embed with unbal single, back- or doublequote "\n'> <'\t\t\teof\n'> <'\t\t)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'F.3: here-doc embed with unbal single, back- or doublequote `\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo $(\n'> <'\t\t\tcat <<-"eof"\n'> <'\t\tF.3: here-doc embed with unbal single, back- or doublequote `\n'> <'\t\t\teof\n'> <'\t\t)'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'G: backslash at end of line\\n'>)} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo $(\n'> <'\t\t\t\techo G: backslash at end of line # \\\n'> <'\t\t\t)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'H: empty command-substitution\\n'>)} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'echo H: empty command-substitution $( )'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<w_heredoc_outside_cmdsub>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <w_heredoc_outside_cmdsub_head> name: w_heredoc_outside_cmdsub_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Checks that here docs work inside cmd subs'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <w_heredoc_outside_cmdsub_body> name: w_heredoc_outside_cmdsub_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had a\\nlittle\\nlamb\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "$( cat <<- \\EOF )"\n'> <'\t\t\t\tMary had a\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb\n'> <'\t\t\tEOF\n'> <'\t\t\t'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had 1\\nlittle\\nlamb\\nMary had 4\\nlittle\\nlambs\\n'>) } {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'for N in 1 4; do echo "$( cat <<- EOF )"\n'> <'\t\t\t\tMary had ${N}\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb$( [ $N -gt 1 ] && echo s )\n'> <'\t\t\tEOF\n'> <'\t\t\tdone'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A Calculation:\\n2 * 7 = 14\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "$( cat <<- EOF)"\n'> <'\t\t\t\tA Calculation:\n'> <'\t\t\t\t\t2 * 7 = $(( 2 * 7 ))\n'> <'\t\t\tEOF\n'> <'\t\t\t'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<x_heredoc_outside_backticks>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <x_heredoc_outside_backticks_head> name: x_heredoc_outside_backticks_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks that here docs work inside old style cmd subs'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <x_heredoc_outside_backticks_body> name: x_heredoc_outside_backticks_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Mary had a little lamb\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo ` cat <<- \\EOF `\n'> <'\t\t\t\tMary had a\n'> <'\t\t\t\tlittle\n'> <'\t\t\t\tlamb\n'> <'\t\t\tEOF\n'> <'\t\t\t'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'A Calculation:\\n17 / 3 = 5\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'echo "` cat <<- EOF `"\n'> <'\t\t\t\tA Calculation:\n'> <'\t\t\t\t\t17 / 3 = $(( 17 / 3 ))\n'> <'\t\t\tEOF\n'> <'\t\t\t'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<t_nested_cmdsubs_in_heredoc>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <t_nested_cmdsubs_in_heredoc_head> name: t_nested_cmdsubs_in_heredoc_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Checks nested command substitutions in here docs'>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <t_nested_cmdsubs_in_heredoc_body> name: t_nested_cmdsubs_in_heredoc_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<cat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <Hello>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<File>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Hello U\\nHelp me!\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'cat <<- EOF\n'> <'\t\t$(cat File) U\n'> <'\t\t$( V=$(cat File); echo "${V%lo}p" ) me!\n'> <'\t\tEOF'> ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<V>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<V>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<A>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<A>})] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<R>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<R>})] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<Value>}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<VAR>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'$2.50\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} {(SQ <'cat <<- EOF\n'> <'\t$(Value='>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <'$2.50'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <';eval echo $(eval $(cat V)$(cat A)$(cat R)=\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\$$(cat $(cat V)$(cat A)$(cat R))\\'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'; eval echo \\$$(set -- *;echo ${3}${1}${2})))\n'> <'\t\tEOF'>) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<z_absurd_heredoc_cmdsub_combos>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <z_absurd_heredoc_cmdsub_combos_head> name: z_absurd_heredoc_cmdsub_combos_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'perverse and unusual cmd substitutions & more'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <z_absurd_heredoc_cmdsub_combos_body> name: z_absurd_heredoc_cmdsub_combos_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Help!'>)}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<help>})] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Help!\\nMe 2\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'\n'> <'\t\t\tcat <<- EOF\n'> <'\t\t\t\t$(\n'> <'\t\t\t\t\tcat <<- STOP\n'> <'\t\t\t\t\t\t$(\n'> <'\t\t\t\t\t\t\tcat `echo help`\n'> <'\t\t\t\t\t\t)\n'> <'\t\t\t\t\tSTOP\n'> <'\t\t\t\t)\n'> <'\t\t\t\t$(\n'> <'\t\t\t\t\tcat <<- END 4<<-TRASH\n'> <'\t\t\t\t\t\tMe $(( 1 + 1 ))\n'> <'\t\t\t\t\tEND\n'> <'\t\t\t\t\tThis is unused noise!\n'> <'\t\t\t\t\tTRASH\n'> <'\t\t\t\t)\n'> <'\t\t\tEOF\n'> <'\t\t'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'Help!\\nMe 2\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'\n'> <'\t\t\tcat <<- EOF\n'> <'\t\t\t\t$(\n'> <'\t\t\t\t\tcat << STOP\n'> <'\t\t\t\t\t\t$(\n'> <'\t\t\t\t\t\t\tcat `echo help`\n'> <'\t\t\t\t\t\t)\n'> <'\t\t\t\t\tSTOP\n'> <'\t\t\t\t)\n'> <'\t\t\t\t$(\n'> <'\t\t\t\t\tcat <<- END 4<<TRASH\n'> <'\t\t\t\t\t\tMe $(( 1 + 1 ))\n'> <'\t\t\t\t\tEND\n'> <'\t\t\t\t\tThis is unused noise!\n'> <'\t\t\t\t\tTRASH\n'> <'\t\t\t\t)\n'> <'\t\t\tEOF\n'> <'\t\t'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <atf_init_test_cases> name: atf_init_test_cases body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<a_basic_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<b_basic_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<c_nested_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<d_nested_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<e_perverse_mixing>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<f_redirect_in_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<g_redirect_in_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<h_vars_in_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<i_vars_in_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<j_cmdsub_in_varexpand>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<k_backticks_in_varexpand>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<l_arithmetic_in_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<m_arithmetic_in_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<n_cmdsub_in_arithmetic>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<o_backticks_in_arithmetic>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<p_cmdsub_in_heredoc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<q_backticks_in_heredoc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<r_heredoc_in_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<s_heredoc_in_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<t_nested_cmdsubs_in_heredoc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<u_nested_backticks_in_heredoc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<v_cmdsub_paren_tests>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<w_heredoc_outside_cmdsub>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<x_heredoc_outside_backticks>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<z_absurd_heredoc_cmdsub_combos>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )