在org-mode中将变量传递给awk代码块

时间:2014-03-13 13:59:32

标签: emacs awk org-mode org-babel

我在Org-Babel中有一个小代码块,它应该依赖于某些参数。我在awk中编写了代码,但是我没有成功使用代码中的参数。

一个小的(不工作的)例子:

#+begin_src awk :var test="value" :results output
BEGIN { print "Test is "test }
#+end_src

我的参数名为test,其值为... value。结果如下:

#+results:
: Test is 

尽管:var test="value"

,似乎没有定义变量测试

然而,当尝试其他语言而不是awk(例如.sh的py)时,似乎没问题:

#+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

我正在使用org 7.8.02。任何的想法?谢谢!

2 个答案:

答案 0 :(得分:0)

在UNIX shell中,您有以下内容:

> VAR="value123"
> echo "Value is $VAR"
value123

使用awk你必须使用" -v"解析变量。选项。否则awk不会在awk中知道你的变量。

> awk -v VARAWK=$VAR 'BEGIN { print "Value is "VARAWK }'
Value is value123

答案 1 :(得分:0)

您的示例对当前的组织模式版本适用于我。我想这只是2014年awk org-babel实施中的错误。