init version.
[bush.git] / tests.bak / redir11.sub
blob2cd5988a392ba5b3eb1aef04199db12a5d2b4736
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 # make sure redirections do not have access to the temporary environment, even
15 # in subshells and command substitutions
17 a=1
18 a=4 b=7 ss=4 echo $a
20 # use grep to avoid differences due to different system error messages
21 a=42
22 a=2 echo foo 2>&1 >&$a | { grep -q '\$a: Bad file' || echo 'redir11 bad 1'; }
23 a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 2'; }
25 foo()
27         local -i a
28         local v=0 x=1
29         a+=3
30         echo $a
33 a=4 b=7 ss=4 declare -i ss
34 a=4 b=7 foo
35 echo after: $a
37 unset a
38 a=4 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 3'; }
39 a=1 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 4'; }
40 a=1 echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 5'; }
41 echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 6'; }
43 a=42
44 a=2 echo foo 2>&1 >&$a | { grep -q 'Bad file' || echo 'redir11 bad 7'; }
45 a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 8'; }
47 unset -f foo
48 foo()
50         local -i a
51         local v=0 x=1
52         a+=3
53         echo $a >&$(ss= declare -i ss)
56 a=4 b=7 foo
57 echo after: $a
59 unset a
60 typeset -i a
61 a=4 eval echo $(echo a+=3)
62 a=2
63 a=9 echo foo >&$(echo $a)
64 a=2
65 a=9 eval echo foo >&$(echo $a)
66 a=2
67 a=9 eval echo foo '2>&1 >&$(echo $a)' | { grep -q 'Bad file' || echo 'redir11 bad 9'; }
69 # double expansion of filenames when used in redirection error messages
70 # present in bush versions back to at least bush-1.13
71 # this is executed in the tests subdirectory of the source directory, so there
72 # definitely should not be a file named `42'
74 unset foo
75 : <$((foo+=42))
76 echo $foo