1 #!/usr/bin/env bash
2
3 #### echo keyword
4 echo done
5 ## stdout: done
6
7 #### if/else
8 if false; then
9 echo THEN
10 else
11 echo ELSE
12 fi
13 ## stdout: ELSE
14
15 #### Turn an array into an integer.
16 a=(1 2 3)
17 (( a = 42 ))
18 echo $a
19 ## stdout: 42
20 ## N-I dash/ash stdout-json: ""
21 ## N-I dash/ash status: 2
22
23 #### Nested % and # operators (looks like a bug, reported by Crestwave)
24 var=$'\n'
25 argv.py "${var#?}"
26 argv.py "${var%''}"
27 argv.py "${var%"${var#?}"}"
28 var='a'
29 argv.py "${var#?}"
30 argv.py "${var%''}"
31 argv.py "${var%"${var#?}"}"
32 ## STDOUT:
33 ['']
34 ['\n']
35 ['\n']
36 ['']
37 ['a']
38 ['a']
39 ## END
40 ## N-I dash STDOUT:
41 ['\\n']
42 ['$\\n']
43 ['$']
44 ['']
45 ['a']
46 ['a']
47 ## END
48
49 #### # operator with single quoted arg (dash/ash and bash/mksh disagree, reported by Crestwave)
50 var=a
51 echo -${var#'a'}-
52 echo -"${var#'a'}"-
53 var="'a'"
54 echo -${var#'a'}-
55 echo -"${var#'a'}"-
56 ## STDOUT:
57 --
58 --
59 -'a'-
60 -'a'-
61 ## END
62 ## OK dash/ash STDOUT:
63 --
64 -a-
65 -'a'-
66 --
67 ## END
68
69 #### / operator with single quoted arg (causes syntax error in regex in OSH, reported by Crestwave)
70 var="++--''++--''"
71 echo no plus or minus "${var//[+-]}"
72 echo no plus or minus "${var//['+-']}"
73 ## STDOUT:
74 no plus or minus ''''
75 no plus or minus ''''
76 ## END
77 ## status: 0
78 ## OK osh STDOUT:
79 no plus or minus ''''
80 ## END
81 ## OK osh status: 1
82 ## BUG ash STDOUT:
83 no plus or minus ''''
84 no plus or minus ++--++--
85 ## END
86 ## BUG ash status: 0
87 ## N-I dash stdout-json: ""
88 ## N-I dash status: 2