1 ## oils_failures_allowed: 4
2 ## compare_shells: bash
3
4
5 #### help
6 help
7 echo status=$? >&2
8 help help
9 echo status=$? >&2
10 help -- help
11 echo status=$? >&2
12 ## STDERR:
13 status=0
14 status=0
15 status=0
16 ## END
17
18 #### bad help topic
19 help ZZZ 2>$TMP/err.txt
20 echo "help=$?"
21 cat $TMP/err.txt | grep -i 'no help topics' >/dev/null
22 echo "grep=$?"
23 ## STDOUT:
24 help=1
25 grep=0
26 ## END
27
28 #### mapfile
29 type mapfile >/dev/null 2>&1 || exit 0
30 printf '%s\n' {1..5..2} | {
31 mapfile
32 echo "n=${#MAPFILE[@]}"
33 printf '[%s]\n' "${MAPFILE[@]}"
34 }
35 ## STDOUT:
36 n=3
37 [1
38 ]
39 [3
40 ]
41 [5
42 ]
43 ## END
44 ## N-I dash/mksh/zsh/ash STDOUT:
45 ## END
46
47 #### readarray (synonym for mapfile)
48 type readarray >/dev/null 2>&1 || exit 0
49 printf '%s\n' {1..5..2} | {
50 readarray
51 echo "n=${#MAPFILE[@]}"
52 printf '[%s]\n' "${MAPFILE[@]}"
53 }
54 ## STDOUT:
55 n=3
56 [1
57 ]
58 [3
59 ]
60 [5
61 ]
62 ## END
63 ## N-I dash/mksh/zsh/ash STDOUT:
64 ## END
65
66 #### mapfile (array name): arr
67 type mapfile >/dev/null 2>&1 || exit 0
68 printf '%s\n' {1..5..2} | {
69 mapfile arr
70 echo "n=${#arr[@]}"
71 printf '[%s]\n' "${arr[@]}"
72 }
73 ## STDOUT:
74 n=3
75 [1
76 ]
77 [3
78 ]
79 [5
80 ]
81 ## END
82 ## N-I dash/mksh/zsh/ash STDOUT:
83 ## END
84
85 #### mapfile (delimiter): -d delim
86 # Note: Bash-4.4+
87 type mapfile >/dev/null 2>&1 || exit 0
88 printf '%s:' {1..5..2} | {
89 mapfile -d : arr
90 echo "n=${#arr[@]}"
91 printf '[%s]\n' "${arr[@]}"
92 }
93 ## STDOUT:
94 n=3
95 [1:]
96 [3:]
97 [5:]
98 ## END
99 ## N-I dash/mksh/zsh/ash STDOUT:
100 ## END
101
102 #### mapfile (delimiter): -d '' (null-separated)
103 # Note: Bash-4.4+
104 type mapfile >/dev/null 2>&1 || exit 0
105 printf '%s\0' {1..5..2} | {
106 mapfile -d '' arr
107 echo "n=${#arr[@]}"
108 printf '[%s]\n' "${arr[@]}"
109 }
110 ## STDOUT:
111 n=3
112 [1]
113 [3]
114 [5]
115 ## END
116 ## N-I dash/mksh/zsh/ash STDOUT:
117 ## END
118
119 #### mapfile (truncate delim): -t
120 type mapfile >/dev/null 2>&1 || exit 0
121 printf '%s\n' {1..5..2} | {
122 mapfile -t arr
123 echo "n=${#arr[@]}"
124 printf '[%s]\n' "${arr[@]}"
125 }
126 ## STDOUT:
127 n=3
128 [1]
129 [3]
130 [5]
131 ## END
132 ## N-I dash/mksh/zsh/ash STDOUT:
133 ## END
134
135 #### mapfile -t doesn't remove \r
136 type mapfile >/dev/null 2>&1 || exit 0
137 printf '%s\r\n' {1..5..2} | {
138 mapfile -t arr
139 argv.py "${arr[@]}"
140 }
141 ## STDOUT:
142 ['1\r', '3\r', '5\r']
143 ## END
144 ## N-I dash/mksh/zsh/ash STDOUT:
145 ## END
146
147 #### mapfile (store position): -O start
148 type mapfile >/dev/null 2>&1 || exit 0
149 printf '%s\n' a{0..2} | {
150 arr=(x y z)
151 mapfile -O 2 -t arr
152 echo "n=${#arr[@]}"
153 printf '[%s]\n' "${arr[@]}"
154 }
155 ## STDOUT:
156 n=5
157 [x]
158 [y]
159 [a0]
160 [a1]
161 [a2]
162 ## END
163 ## N-I dash/mksh/zsh/ash STDOUT:
164 ## END
165
166 #### mapfile (input range): -s start -n count
167 type mapfile >/dev/null 2>&1 || exit 0
168 printf '%s\n' a{0..10} | {
169 mapfile -s 5 -n 3 -t arr
170 echo "n=${#arr[@]}"
171 printf '[%s]\n' "${arr[@]}"
172 }
173 ## STDOUT:
174 n=3
175 [a5]
176 [a6]
177 [a7]
178 ## END
179 ## N-I dash/mksh/zsh/ash STDOUT:
180 ## END
181
182 #### mapfile / readarray stdin TODO: Fix me.
183 shopt -s lastpipe # for bash
184
185 seq 2 | mapfile m
186 seq 3 | readarray r
187 echo ${#m[@]}
188 echo ${#r[@]}
189 ## STDOUT:
190 2
191 3
192 ## END