OILS / spec / command-sub-ksh.test.sh View on Github | oils.pub

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