Передача переменных в блок кода 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
Другие вопросы по тегам