组织模式babel sh脚本+转义(?)〜字符的主目录?

时间:2017-12-19 15:47:44

标签: emacs sh org-mode org-babel

我在org-mode babel下有这个小的 sh 脚本:

#+NAME: testHomeDir 
#+BEGIN_SRC sh :var directory="./"
set -e
cd $directory
ls | head -5
#+END_SRC

注意:set -e可以在发生错误时立即停止脚本。

该脚本适用于完整路径:

#+CALL: testHomeDir("/home/picaud/Temp")
#+RESULTS:
:RESULTS:
current issues.pdf
AnnotatedPDF
Bitbucket
compareScript.wls
Data
:END:

然而,当与~(我的主目录)一起使用时,它不再起作用了:

#+CALL: testHomeDir("~/Temp")

我得到了

  

sh:4:cd:不能cd到〜/ Temp

错误消息。

请注意

#+CALL: testHomeDir("\~/Temp")
#+CALL: testHomeDir("\\~/Temp")

也不行。

我想~字符在某个地方被转义(在Emacs中?在sh?中)...

我的问题是:如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

shell没有对它进行扩展,因为它是在Emacs中设置的,并且是文字字符串'〜'。为了获得扩展,您需要通过eval运行它:

directory=$(eval echo $directory)

在尝试使用它之前。