#+Title: a collection of examples for ob-shell tests #+OPTIONS: ^:nil * Sample data structures #+NAME: sample_array | one | | two | | three | #+NAME: sample_mapping_table | first | one | | second | two | | third | three | #+NAME: sample_big_table | bread | 2 | kg | | spaghetti | 20 | cm | | milk | 50 | dl | * Array tests :PROPERTIES: :ID: 0ba56632-8dc1-405c-a083-c204bae477cf :END: ** Generic shell: no arrays #+begin_src sh :exports results :results output :var array=sample_array echo ${array} #+end_src #+RESULTS: : one two three ** Bash shell: support for arrays Bash will see a simple indexed array. In this test, we check that the returned value is indeed only the first item of the array, as opposed to the generic serialiation that will return all elements of the array as a single string. #+begin_src bash :exports results :results output :var array=sample_array echo ${array} #+end_src #+RESULTS: : one * Associative array tests (simple map) :PROPERTIES: :ID: bec1a5b0-4619-4450-a8c0-2a746b44bf8d :END: ** Generic shell: no special handing The shell will see all values as a single string. #+begin_src sh :exports results :results output :var table=sample_mapping_table echo ${table} #+end_src #+RESULTS: : first one second two third three ** Bash shell: support for associative arrays Bash will see a table that contains the first column as the 'index' of the associative array, and the second column as the value. #+begin_src bash :exports :results output results :var table=sample_mapping_table echo ${table[second]} #+end_src #+RESULTS: : two * Associative array tests (more than 2 columns) :PROPERTIES: :ID: 82320a48-3409-49d7-85c9-5de1c6d3ff87 :END: ** Generic shell: no special handing #+begin_src sh :exports results :results output :var table=sample_big_table echo ${table} #+end_src #+RESULTS: : bread 2 kg spaghetti 20 cm milk 50 dl ** Bash shell: support for associative arrays with lists Bash will see an associative array that contains each row as a single string. Bash cannot handle lists in associative arrays. #+begin_src bash :exports results :results output :var table=sample_big_table echo ${table[spaghetti]} #+end_src #+RESULTS: : 20 cm * Header arg tests :PROPERTIES: :ID: cc56f3c6-13ec-4026-9d83-3106efd833e2 :END: ** stdin #+name: an-org-reference org reference line 1 org reference line 2 #+begin_src sh :stdin an-org-reference :results output cat #+end_src #+RESULTS: : org reference line 1 : org reference line 2