array.right 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. ./array.tests: line 15: syntax error near unexpected token `&'
  2. ./array.tests: line 15: `test=(first & second)'
  3. 1
  4. abcde
  5. abcde
  6. abcde bdef
  7. abcde bdef
  8. declare -a BASH_ARGC=()
  9. declare -a BASH_ARGV=()
  10. declare -a BASH_LINENO=([0]="0")
  11. declare -a BASH_SOURCE=([0]="./array.tests")
  12. declare -a DIRSTACK=()
  13. declare -a FUNCNAME
  14. declare -a a=([0]="abcde" [1]="" [2]="bdef")
  15. declare -a b
  16. declare -ar c
  17. abcde bdef
  18. abcde bdef
  19. abcde
  20. abcde
  21. abcde
  22. bdef
  23. hello world
  24. 11
  25. 3
  26. bdef hello world test expression test 2
  27. ./array.tests: line 76: readonly: `a[5]': not a valid identifier
  28. declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  29. declare -ar c
  30. declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  31. declare -ar c
  32. readonly -a a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  33. readonly -a c
  34. a test
  35. declare -a BASH_ARGC=()
  36. declare -a BASH_ARGV=()
  37. declare -a BASH_LINENO=([0]="0")
  38. declare -a BASH_SOURCE=([0]="./array.tests")
  39. declare -a DIRSTACK=()
  40. declare -a FUNCNAME
  41. declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  42. declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
  43. declare -ar c
  44. declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")
  45. declare -a e=([0]="test")
  46. declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
  47. ./array.tests: line 100: a: readonly variable
  48. ./array.tests: line 102: b[]: bad array subscript
  49. ./array.tests: line 103: b[*]: bad array subscript
  50. ./array.tests: line 104: ${b[ ]}: bad substitution
  51. ./array.tests: line 106: c[-2]: bad array subscript
  52. ./array.tests: line 107: c: bad array subscript
  53. ./array.tests: line 109: d[7]: cannot assign list to array member
  54. ./array.tests: line 111: []=abcde: bad array subscript
  55. ./array.tests: line 111: [*]=last: cannot assign to non-numeric index
  56. ./array.tests: line 111: [-65]=negative: bad array subscript
  57. declare -a BASH_ARGC=()
  58. declare -a BASH_ARGV=()
  59. declare -a BASH_LINENO=([0]="0")
  60. declare -a BASH_SOURCE=([0]="./array.tests")
  61. declare -a DIRSTACK=()
  62. declare -a FUNCNAME
  63. declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  64. declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
  65. declare -ar c
  66. declare -a d=([1]="test test")
  67. declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
  68. ./array.tests: line 119: unset: ps1: not an array variable
  69. ./array.tests: line 123: declare: c: cannot destroy array variables in this way
  70. this of
  71. this is a test of read using arrays
  72. this test
  73. this is a test of arrays
  74. declare -a BASH_ARGC=()
  75. declare -a BASH_ARGV=()
  76. declare -a BASH_LINENO=([0]="0")
  77. declare -a BASH_SOURCE=([0]="./array.tests")
  78. declare -a DIRSTACK=()
  79. declare -a FUNCNAME
  80. declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
  81. declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
  82. declare -ar c
  83. declare -a d=([1]="test test")
  84. declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
  85. declare -a rv=([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays")
  86. abde
  87. abde
  88. bbb
  89. efgh
  90. wxyz
  91. wxyz
  92. ./array.tests
  93. a
  94. b c
  95. d
  96. e f g
  97. h
  98. ./array.tests
  99. a
  100. b c
  101. d
  102. e f g
  103. h
  104. /bin /usr/bin /usr/ucb /usr/local/bin . /sbin /usr/sbin
  105. bin bin ucb bin . sbin sbin
  106. bin
  107. / / / / / /
  108. /
  109. argv[1] = <bin>
  110. argv[1] = </>
  111. argv[1] = <sbin>
  112. argv[1] = </>
  113. \bin \usr/bin \usr/ucb \usr/local/bin . \sbin \usr/sbin
  114. \bin \usr\bin \usr\ucb \usr\local\bin . \sbin \usr\sbin
  115. \bin \usr\bin \usr\ucb \usr\local\bin . \sbin \usr\sbin
  116. 4 -- 4
  117. 7 -- 7
  118. 55
  119. 49
  120. 6 -- 6
  121. 42 14 44
  122. grep [ 123 ] *
  123. 6 7 9
  124. 6 7 9 5
  125. length = 3
  126. value = new1 new2 new3
  127. ./array.tests: line 239: narray: unbound variable
  128. ./array1.sub: line 1: syntax error near unexpected token `('
  129. ./array1.sub: line 1: `printf "%s\n" -a a=(a 'b c')'
  130. ./array2.sub: line 1: declare: `[]=asdf': not a valid identifier
  131. ./array2.sub: line 2: a[]: bad array subscript
  132. ./array2.sub: line 4: syntax error near unexpected token `('
  133. ./array2.sub: line 4: `declare -a ''=(a 'b c')'
  134. 9
  135. 9
  136. 7 8 9
  137. 8 11
  138. 8 11
  139. 6
  140. 6
  141. nordholz
  142. 8
  143. 8
  144. 8
  145. a b c d e f g
  146. for case if then else
  147. <> < > !
  148. 12 14 16 18 20
  149. 4414758999202
  150. aaa bbb
  151. ./array.tests: line 289: syntax error near unexpected token `<>'
  152. ./array.tests: line 289: `metas=( <> < > ! )'
  153. ./array.tests: line 290: syntax error near unexpected token `<>'
  154. ./array.tests: line 290: `metas=( [1]=<> [2]=< [3]=> [4]=! )'
  155. abc 3
  156. case 4
  157. abc case if then else 5
  158. abc case if then else 5
  159. 0
  160. case 4
  161. case if then else 5
  162. case if then else 5
  163. argv[1] = <0>
  164. argv[2] = <1>
  165. argv[3] = <4>
  166. argv[4] = <10>
  167. argv[1] = <0>
  168. argv[2] = <1>
  169. argv[3] = <4>
  170. argv[4] = <10>
  171. argv[1] = <0>
  172. argv[2] = <1>
  173. argv[3] = <4>
  174. argv[4] = <10>
  175. argv[1] = <0 1 4 10>
  176. include null element -- expect one
  177. one
  178. include unset element -- expect three five
  179. three five
  180. start at unset element -- expect five seven
  181. five seven
  182. too many elements -- expect three five seven
  183. three five seven
  184. positive offset - expect five seven
  185. five seven
  186. negative offset to unset element - expect seven
  187. seven
  188. positive offset 2 - expect seven
  189. seven
  190. negative offset 2 - expect seven
  191. seven
  192. out-of-range offset
  193. e
  194. 4
  195. 1 4 7 10
  196. 'b
  197. b c
  198. $0
  199. t
  200. [3]=abcde r s t u v
  201. e
  202. 9
  203. 2
  204. a b c
  205. argv[1] = <-iname 'a>
  206. argv[2] = <-iname 'b>
  207. argv[3] = <-iname 'c>
  208. 'hey'
  209. hey
  210. ''hey
  211. 'hey'
  212. argv[1] = <c>
  213. argv[2] = <d>
  214. argv[3] = <e>
  215. argv[4] = <f>
  216. argv[1] = <c d>
  217. argv[2] = <e f>
  218. argv[1] = <c d>
  219. argv[2] = <e f>
  220. argv[1] = <c d>
  221. argv[2] = <e f>
  222. argv[1] = <-iname 'abc>
  223. argv[2] = <-iname 'def>
  224. argv[1] = <-iname 'abc>
  225. argv[2] = <-iname 'def>
  226. argv[1] = <-iname>
  227. argv[2] = <abc -iname def>
  228. argv[1] = <-iname 'abc>
  229. argv[2] = <-iname 'def>
  230. argv[1] = <-iname>
  231. argv[2] = <abc -iname def>
  232. argv[1] = <-iname 'abc>
  233. argv[2] = <-iname 'def>
  234. argv[1] = <-iname 'abc>
  235. argv[2] = <-iname 'def>
  236. argv[1] = <-iname>
  237. argv[2] = <abc -iname def>
  238. *.* OK
  239. 1
  240. a1 2 3c
  241. argv[1] = <var with spaces>
  242. argv[1] = <var with spaces>
  243. argv[1] = <var with spacesab>
  244. argv[2] = <cd>
  245. argv[3] = <ef>
  246. argv[1] = <var with spacesab>
  247. argv[2] = <cd>
  248. argv[3] = <ef>
  249. argv[1] = <var with spacesab>
  250. argv[2] = <cd>
  251. argv[3] = <ef>
  252. argv[1] = <var with spacesab>
  253. argv[2] = <cd>
  254. argv[3] = <ef>
  255. argv[1] = <var with spacesab>
  256. argv[2] = <cd>
  257. argv[3] = <ef>
  258. argv[1] = <var with spacesab>
  259. argv[2] = <cd>
  260. argv[3] = <ef>
  261. 2
  262. argv[1] = <element1 with spaces>
  263. argv[2] = <element2 with spaces>
  264. argv[1] = <element1 with spaces>
  265. argv[2] = <element2 with spaces>
  266. nord!olz
  267. rdholz
  268. rdholz
  269. rdho
  270. argv[1] = <fooq//barq/>
  271. argv[1] = <fooq>
  272. argv[2] = <>
  273. argv[3] = <barq>
  274. argv[4] = <>
  275. argv[1] = <foo!//bar!/>
  276. argv[1] = <foo!>
  277. argv[2] = <>
  278. argv[3] = <bar!>
  279. argv[4] = <>
  280. argv[1] = <ooq//arq/>
  281. argv[1] = <ooq>
  282. argv[2] = <>
  283. argv[3] = <arq>
  284. argv[4] = <>
  285. argv[1] = <Fooq//Barq/>
  286. argv[1] = <Fooq>
  287. argv[2] = <>
  288. argv[3] = <Barq>
  289. argv[4] = <>
  290. argv[1] = <FOOQ//BARQ/>
  291. argv[1] = <FOOQ>
  292. argv[2] = <>
  293. argv[3] = <BARQ>
  294. argv[4] = <>
  295. 126
  296. 127
  297. 128
  298. argv[1] = <€>
  299. argv[1] = <~>
  300. argv[2] = <^?>
  301. argv[3] = <€>
  302. argv[1] = <~>
  303. argv[2] = <^?>
  304. argv[3] = <€>
  305. argv[1] = <~>
  306. argv[2] = <^?>
  307. argv[3] = <€>
  308. Monday Tuesday Wednesday Thursday Friday Saturday Sunday
  309. Monday
  310. Monday
  311. Tuesday
  312. Monday
  313. Monday
  314. Tuesday
  315. Monday
  316. Tuesday
  317. Wednesday
  318. Monday
  319. Tuesday
  320. Wednesday
  321. monday, monday, tuesday
  322. wednesday, wednesday, thursday
  323. monday, monday, tuesday
  324. Wednesday, Wednesday, Thursday
  325. nday
  326. esday
  327. dnesday
  328. nday
  329. esday
  330. dnesday
  331. onday
  332. uesday
  333. ednesday
  334. onday
  335. uesday
  336. ednesday
  337. version[agent]
  338. version.agent
  339. version[agent]
  340. version.agent
  341. version[agent] foo[bar]
  342. version.agent bowl
  343. foo foobar] foo[bar]
  344. bbb bleh bleh
  345. ab]
  346. bar
  347. 1
  348. 1
  349. 1
  350. 1
  351. 1
  352. 1
  353. main main
  354. function function
  355. function function
  356. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")
  357. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4")
  358. declare -a x=([0]="0" [1]="1" [2]="2" [4]="4")
  359. ./array14.sub: line 11: unset: [-10]: bad array subscript
  360. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4")
  361. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="five")
  362. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")
  363. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="foo")
  364. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")
  365. declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4four" [5]="5")
  366. strlen(4four) = 5
  367. 1 2 0 3
  368. 1 2 0 3
  369. 1 2 0 3
  370. 1 2 0 3
  371. 1 2 0 3
  372. foo index 1: ok
  373. foo index 2: ok
  374. foo: implicit reference to element 0: ok
  375. foo: arithmetic evaluation: ok
  376. bar: array with element zero unset: ok
  377. bar: element zero: ok
  378. qux: unset array: ok
  379. qux: unset array element 0: ok
  380. 2
  381. 2
  382. 2
  383. 2
  384. 0
  385. 0
  386. 1
  387. 2
  388. 0
  389. 0
  390. 3
  391. 3
  392. 0
  393. 0
  394. zero
  395. zero
  396. one
  397. one
  398. one
  399. one
  400. two
  401. two
  402. ./array17.sub: line 76: ~ : syntax error: operand expected (error token is "~ ")
  403. 1
  404. argv[1] = <>
  405. argv[2] = <>
  406. argv[3] = <>
  407. argv[1] = <bar>
  408. argv[1] = <-->
  409. argv[1] = <>
  410. argv[1] = <qux>
  411. argv[1] = <->
  412. argv[2] = <->
  413. argv[1] = < >
  414. argv[1] = <>
  415. argv[2] = <>
  416. argv[3] = <>
  417. argv[1] = <bar>
  418. argv[1] = <-->
  419. argv[1] = <>
  420. argv[1] = <qux>
  421. argv[1] = <->
  422. argv[2] = <->
  423. argv[1] = < >
  424. declare -a foo=([0]="( zeroind )")
  425. declare -a foo=([0]="zeroind")
  426. declare -a foo=([0]="zeroind")
  427. declare -a foo=([0]="[0]=bar")
  428. declare -a foo=([0]="[0]=bar")
  429. declare -a foo=([0]="[0]=bar")
  430. declare -- a="(1 2 3)"
  431. declare -a a=([0]="1" [1]="2" [2]="3")
  432. ./array19.sub: line 46: a: 1: must use subscript when assigning associative array
  433. ./array19.sub: line 46: a: 2: must use subscript when assigning associative array
  434. ./array19.sub: line 46: a: 3: must use subscript when assigning associative array
  435. declare -A a=()
  436. declare -- a="([0]=a [1]=b)"
  437. declare -a a=([0]="a" [1]="b")
  438. declare -A a=([0]="a" [1]="b" )
  439. declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]")
  440. declare -a var=([0]="[\$(echo total 0)]=1 [2]=2]")
  441. declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]")
  442. ./array19.sub: line 81: total 0: syntax error in expression (error token is "0")
  443. declare -a var=()
  444. declare -al foo=([0]="abcde" [1]="two" [2]="three")
  445. declare -al foo=([0]="abcde")
  446. declare -al ar=([0]="one" [1]="two" [2]="three")
  447. declare -a a=([2]="foo")
  448. declare -a a=([2]="foo")
  449. declare -a a=([1]="(var)" [2]="foo")
  450. ./array19.sub: line 120: warning: a[1]=(var): quoted compound array assignment deprecated
  451. declare -a a=([1]="(var)")
  452. declare -a a=([0]="1" [1]="2" [2]="(1 2 3)")
  453. declare -a a=([0]="1" [1]="2" [2]="(1 2 3)")
  454. declare -a a=([0]="1" [1]="2" [2]="3")
  455. declare -a a=([0]="1" [1]="2" [2]="3")
  456. declare -a a=([0]="1" [1]="2" [2]="3")
  457. declare -- a="a b"
  458. declare -- b="/scratch/bash"
  459. declare -- c="(1 2)"
  460. declare -- d="(\$a)"
  461. declare -- e="(\$(echo Darwin))"
  462. declare -a a=([0]="a b")
  463. declare -a b=([0]="/scratch/bash")
  464. declare -a c=([0]="1" [1]="2")
  465. declare -a d=([0]="a" [1]="b")
  466. declare -a e=([0]="Darwin")
  467. ./array19.sub: line 166: c: 1: must use subscript when assigning associative array
  468. ./array19.sub: line 166: c: 2: must use subscript when assigning associative array
  469. ./array19.sub: line 166: d: $a: must use subscript when assigning associative array
  470. ./array19.sub: line 166: e: $(echo Darwin): must use subscript when assigning associative array
  471. declare -A a=([0]="a b" )
  472. declare -A b=([0]="/scratch/bash" )
  473. declare -A c=()
  474. declare -A d=()
  475. declare -A e=()
  476. a+b+c
  477. x+b+c
  478. a+b+c
  479. x+b+c
  480. argv[1] = <a+b+c+d+e+f>
  481. argv[1] = <x+b+c+d+e+f>
  482. a b c
  483. x b c
  484. a b c
  485. x b c
  486. declare -a a=([1]="2" [2]="3" [3]="4")
  487. abcd
  488. unset
  489. ./array21.sub: line 17: typeset: a: not found
  490. ./array21.sub: line 20: typeset: A: not found
  491. declare -a a=()
  492. declare -A A=()
  493. declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3")