1 #!/bin/bash
2
3 ### $PWD
4 # Just test that it has a slash for now.
5 echo $PWD | grep -o /
6 # status: 0
7
8 ### $?
9 echo $? # starts out as 0
10 sh -c 'exit 33'
11 echo $?
12 # stdout-json: "0\n33\n"
13 # status: 0
14
15 ### $#
16 set -- 1 2 3 4
17 echo $#
18 # stdout: 4
19 # status: 0
20
21 ### $-
22 # dash's behavior seems most sensible here?
23 $SH -o nounset -c 'echo $-'
24 # OK bash stdout: huBc
25 # OK dash stdout: u
26 # OK mksh stdout: uhc
27 # status: 0
28
29 ### $_
30 # This is bash-specific.
31 echo hi
32 echo $_
33 # stdout-json: "hi\nhi\n"
34 # N-I dash/mksh stdout-json: "hi\n\n"
35
36 ### PID $$
37 # Just test that it has decimal digits
38 echo $$ | egrep '[0-9]+'
39 # status: 0
40
41 ### Background PID $!
42 # Just test that it has decimal digits
43 sleep 0.01 &
44 echo $! | egrep '[0-9]+'
45 wait
46 # status: 0
47
48 ### $PPID
49 expr $0 : '.*/osh$' && exit 99 # Disabled because of spec-runner.sh issue
50 echo $PPID | egrep '[0-9]+'
51 # Disabled because of spec-runner.sh issue: bash sets it for osh
52 # status: 0
53
54 # NOTE: There is also $BASHPID
55
56 ### $PIPESTATUS
57 echo hi | sh -c 'cat; exit 33' | wc -l >/dev/null
58 argv.py "${PIPESTATUS[@]}"
59 # status: 0
60 # stdout: ['0', '33', '0']
61 # N-I dash stdout-json: ""
62 # N-I dash status: 2
63
64 ### $RANDOM
65 expr $0 : '.*/osh$' && exit 99 # Disabled because of spec-runner.sh issue
66 echo $RANDOM | egrep '[0-9]+'
67 # status: 0
68 # N-I dash status: 1