89 lines
2.2 KiB
Org Mode
89 lines
2.2 KiB
Org Mode
#+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
|
|
|