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 |