我在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?)...
我的问题是:如何解决这个问题?
〜不会被shell扩展,因为它是在Emacs中设置的,是文字字符串'〜'。为了获得扩展,您需要通过eval运行它:
directory=$(eval echo $directory)
在你尝试使用它之前。