DONE literal values from tables
- State "DONE" from ""
string values passed to :var
header arguments are assumed to be
source name references, so upon encountering
#+begin_src emacs-lisp :var data=something
babel will rush off in search of a table, result, or code block named
"something" with which to initialize data
, rather than passing the
literal string value of something. This can lead to confusing
behavior when dealing with tables, where for example
#+TBLNAME: system-host-ping :var host=system-hosts | name | ip | ping | |--------+----------------+--------| | host 1 | 192.168.10.200 | #ERROR | | host 2 | 192.168.10.24 | #ERROR | | host 3 | 192.168.42.24 | #ERROR | #+TBLFM: $3='(sbe system-ping (ip $2))'
will result in all errors because each ip address is interpreted as a
reference to be resolved rather than as a literal value. To fix this
behavior the following $$
syntax has been added which can force
table values to be interpreted as literal strings, resulting in the
following
#+TBLNAME: system-host-ping :var host=system-hosts | name | ip | ping | |--------+----------------+----------------| | host 1 | 192.168.10.200 | 192.168.10.200 | | host 2 | 192.168.10.24 | 192.168.10.24 | | host 3 | 192.168.42.24 | 192.168.42.24 | #+TBLFM: $3='(sbe system-ping (ip $$2))'
support stuff
#+source: system-ping #+begin_src sh :var ip="192.168.42.24" # Testing echo $ip #+end_src #+results: system-ping : 192.168.42.24