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.
5#
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.
10#
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/>.
13#
14# check saving and restoring positional parameters around function calls
15
16f()
17{
18	echo $FUNCNAME: "$@"
19}
20
21f1()
22{
23	f {1..50}
24	echo $FUNCNAME: after: $@
25}
26
27set -- {1..100}
28
29f1 {1..20}
30echo done: $@
31
32f3()
33{
34	echo $FUNCNAME:$1
35	shift
36	if [ $# -le 0 ]; then
37		return
38	fi
39	f3 "$@"
40}
41
42f3 {1..20}
43
44# now let's try source with and without positional parameters
45
46set -- {1..20}
47echo before source: "$@"
48. ./varenv15.in
49echo after source 1: "$@"
50. ./varenv15.in one two three four five six seven eight nine ten
51echo after source 2: "$@"
52