1 | ## compare_shells: mksh
|
2 | ## oils_failures_allowed: 4
|
3 |
|
4 | # Features that bash 5.3 may implement
|
5 |
|
6 | #### ${ echo hi;}
|
7 |
|
8 | x=${ echo hi;}
|
9 | echo "[$x]"
|
10 | echo
|
11 |
|
12 | # trailing space allowed
|
13 | x=${ echo one; echo two; }
|
14 | echo "[$x]"
|
15 | echo
|
16 |
|
17 | myfunc() {
|
18 | echo ' 3 '
|
19 | echo ' 4 5 '
|
20 | }
|
21 |
|
22 | x=${ myfunc;}
|
23 | echo "[$x]"
|
24 | echo
|
25 |
|
26 | # SYNTAX ERROR
|
27 | x=${myfunc;}
|
28 | echo "[$x]"
|
29 |
|
30 | ## status: 1
|
31 | ## STDOUT:
|
32 | [hi]
|
33 |
|
34 | [one
|
35 | two]
|
36 |
|
37 | [ 3
|
38 | 4 5 ]
|
39 |
|
40 | ## END
|
41 |
|
42 | #### ${ echo hi } without semi-colon
|
43 |
|
44 | x=${ echo no-semi }
|
45 | echo "[$x]"
|
46 |
|
47 | x=${ echo no-space}
|
48 | echo "[$x]"
|
49 |
|
50 | # damn I wanted to take this over! mksh executes it!
|
51 | x=${ ~/ysh-tilde-sub }
|
52 |
|
53 | # echo ${ ~/ysh-tilde-sub }
|
54 |
|
55 | ## status: 127
|
56 | ## STDOUT:
|
57 | [no-semi]
|
58 | [no-space]
|
59 | ## END
|
60 |
|
61 | #### ${|REPLY=hi}
|
62 |
|
63 | x=${|y=" reply var "; REPLY=$y}
|
64 | echo "[$x]"
|
65 | echo
|
66 |
|
67 | echo ' from file ' > tmp.txt
|
68 |
|
69 | x=${|read -r < tmp.txt}
|
70 | echo "[$x]"
|
71 | echo
|
72 |
|
73 | # SYNTAX ERROR
|
74 | x=${ |REPLY=zz}
|
75 | echo "[$x]"
|
76 |
|
77 | ## status: 1
|
78 | ## STDOUT:
|
79 | [ reply var ]
|
80 |
|
81 | [from file]
|
82 |
|
83 | ## END
|
84 |
|
85 |
|
86 | #### for loop / case
|
87 |
|
88 | x=${ for i in a b; do echo -$i-; done; }
|
89 | echo "$x"
|
90 |
|
91 | y=${|for i in a b; do REPLY+="-$i-"; done; }
|
92 | echo "$y"
|
93 |
|
94 | echo
|
95 |
|
96 | x2=${ case foo in foo) echo sh-case ;; esac; }
|
97 | echo "$x2"
|
98 |
|
99 | y2=${|case foo in foo) REPLY=sh-case ;; esac; }
|
100 | echo "$y2"
|
101 |
|
102 | ## STDOUT:
|
103 | -a-
|
104 | -b-
|
105 | -a--b-
|
106 |
|
107 | sh-case
|
108 | sh-case
|
109 | ## END
|