1 |
#!/usr/bin/env bash |
2 |
|
3 |
### Sourcing a script that returns at the top level |
4 |
echo one |
5 |
. spec/testdata/return-helper.sh |
6 |
echo $? |
7 |
echo two |
8 |
## STDOUT: |
9 |
one |
10 |
return-helper.sh |
11 |
42 |
12 |
two |
13 |
## END |
14 |
|
15 |
### top level control flow |
16 |
$SH spec/testdata/top-level-control-flow.sh |
17 |
## status: 0 |
18 |
## STDOUT: |
19 |
SUBSHELL |
20 |
BREAK |
21 |
CONTINUE |
22 |
RETURN |
23 |
## OK bash STDOUT: |
24 |
SUBSHELL |
25 |
BREAK |
26 |
CONTINUE |
27 |
RETURN |
28 |
DONE |
29 |
## END |
30 |
|
31 |
### errexit and top-level control flow |
32 |
$SH -o errexit spec/testdata/top-level-control-flow.sh |
33 |
## status: 2 |
34 |
## OK bash status: 1 |
35 |
## STDOUT: |
36 |
SUBSHELL |
37 |
## END |
38 |
|
39 |
### set -o strict-control-flow |
40 |
$SH -o strict-control-flow -c 'echo break; break; echo hi' |
41 |
## stdout: break |
42 |
## status: 1 |
43 |
## N-I dash/bash status: 2 |
44 |
## N-I dash/bash stdout-json: "" |
45 |
## N-I mksh status: 1 |
46 |
## N-I mksh stdout-json: "" |
47 |
|
48 |
### return at top level is an error |
49 |
return |
50 |
echo "status=$?" |
51 |
## stdout-json: "" |
52 |
## OK bash STDOUT: |
53 |
status=1 |
54 |
## END |
55 |
|
56 |
### continue at top level is NOT an error |
57 |
# NOTE: bash and mksh both print warnings, but don't exit with an error. |
58 |
continue |
59 |
echo status=$? |
60 |
## stdout: status=0 |
61 |
|
62 |
### break at top level is NOT an error |
63 |
break |
64 |
echo status=$? |
65 |
## stdout: status=0 |