(parm.sh:26):
26:	x="main"
+# Debugger test of:
+# stack trace
+# parameter display
+# return command
+# evaluation of dollar variables $1, $2
+# 
+### Try a simple stack command...
+where 1
->0 in file `parm.sh' at line 26
+step 2
(parm.sh:3):
3:	fn1() {
+where 2
->0 in file `parm.sh' at line 3
##1 fn1("5") called from file `parm.sh' at line 27
+### Try printing a dollar variable...
+pr $1
5
+### Same thing using eval...
+eval echo $1
5
$? is 0
+### Setting an action to print $1
+a 4 echo "\$1 at line 4 has value $1"
Action 1 set in file parm.sh, line 4.
+c fn2
One-time breakpoint 1 set in file parm.sh, line 14.
$1 at line 4 has value 5
$1 at line 4 has value 4
$1 at line 4 has value 3
$1 at line 4 has value 2
$1 at line 4 has value 1
$1 at line 4 has value 0
(parm.sh:14):
14:	fn2() {
+# cont
+### First parameter should have embedded blanks...
+where 8
->0 in file `parm.sh' at line 14
##1 fn2("testing 1", "2 3") called from file `parm.sh' at line 6
##2 fn1("0") called from file `parm.sh' at line 10
##3 fn1("1") called from file `parm.sh' at line 10
##4 fn1("2") called from file `parm.sh' at line 10
##5 fn1("3") called from file `parm.sh' at line 10
##6 fn1("4") called from file `parm.sh' at line 10
##7 fn1("5") called from file `parm.sh' at line 27
+pr "dollar 1: $1"
dollar 1: testing\ 1
+### Same thing using eval...
+ev echo "\$1 is $1"
$1 is testing\ 1
$? is 0
+### Should have embedded blanks...
+pr $2
2\ 3
+ev echo "\$2 is $2"
$2 is 2\ 3
$? is 0
+continue fn3
One-time breakpoint 2 set in file parm.sh, line 21.
fn2: testing 1 2 3
(parm.sh:21):
21:	fn3() {
+### Test return. Should go back to fn2 and then fn1...
+return 
(parm.sh:18):
18:	  x="fn2 returning"
+return 
(parm.sh:7):
7:	    return
+### Should not have done above-listed x="fn2" assignment
+pr $x
fn2 started
+where 7
->0 in file `parm.sh' at line 7
##1 fn1("0") called from file `parm.sh' at line 10
##2 fn1("1") called from file `parm.sh' at line 10
##3 fn1("2") called from file `parm.sh' at line 10
##4 fn1("3") called from file `parm.sh' at line 10
##5 fn1("4") called from file `parm.sh' at line 10
##6 fn1("5") called from file `parm.sh' at line 27
+return 
(parm.sh:11):
11:	  x="fn1 returning"
+where 6
->0 in file `parm.sh' at line 11
##1 fn1("1") called from file `parm.sh' at line 10
##2 fn1("2") called from file `parm.sh' at line 10
##3 fn1("3") called from file `parm.sh' at line 10
##4 fn1("4") called from file `parm.sh' at line 10
##5 fn1("5") called from file `parm.sh' at line 27
+return 
(parm.sh:11):
11:	  x="fn1 returning"
+where 5
->0 in file `parm.sh' at line 11
##1 fn1("2") called from file `parm.sh' at line 10
##2 fn1("3") called from file `parm.sh' at line 10
##3 fn1("4") called from file `parm.sh' at line 10
##4 fn1("5") called from file `parm.sh' at line 27
+return 
(parm.sh:11):
11:	  x="fn1 returning"
+return 
(parm.sh:11):
11:	  x="fn1 returning"
+where 3
->0 in file `parm.sh' at line 11
##1 fn1("4") called from file `parm.sh' at line 10
##2 fn1("5") called from file `parm.sh' at line 27
+### * Testing that exit status preserved on eval and print...
+c 29
One-time breakpoint 3 set in file parm.sh, line 29.
(parm.sh:29):
29:	exit 0
+ev echo "eval says exit was $?"
eval says exit was 5
$? is 0
+pr "print says exit was $?"
print says exit was 5
+info files
Source files which we have recorded info about:
  parm.sh: parm.sh, 33 lines
+### * quitting...
+quit 
bashdb: That's all, folks...
