Передача переменных в блок кода awk в режиме org
У меня есть небольшой блок кода в Org-Babel, который должен зависеть от некоторых параметров. Я написал свой код в awk, но мне не удалось использовать параметры в моем коде.
Небольшой (не работающий) пример:
#+begin_src awk :var test="value" :results output
BEGIN { print "Test is "test }
#+end_src
Мой параметр называется test, а его значение… value. Результаты следующие:
#+results:
: Test is
Переменная test, похоже, не была определена, несмотря на :var test="value"
Однако при попытке использовать другие языки, кроме awk (например, python of sh), все выглядит нормально:
#+begin_src python :var test="value" :results output
print "Test is %s"%test
#+end_src
#+results:
: Test is value
#+begin_src sh :var test="value" :results output
echo "Test is "$test
#+end_src
#+results:
: Test is value
Я использую орг 7.8.02. Любая идея? Спасибо!
2 ответа
Ваш пример прекрасно работает с текущей версией режима org. Я предполагаю, что это было просто ошибкой в 2014 году в реализации awk org-babel.
В оболочке UNIX у вас есть следующее:
> VAR="value123"
> echo "Value is $VAR"
value123
с помощью awk вы должны анализировать переменные с опцией "-v". В противном случае awk не будет знать ваши переменные внутри awk.
> awk -v VARAWK=$VAR 'BEGIN { print "Value is "VARAWK }'
Value is value123