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

问题描述 投票:0回答:1

我在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?)...

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

emacs sh org-mode org-babel
1个回答
2
投票

〜不会被shell扩展,因为它是在Emacs中设置的,是文字字符串'〜'。为了获得扩展,您需要通过eval运行它:

directory=$(eval echo $directory)

在你尝试使用它之前。

© www.soinside.com 2019 - 2024. All rights reserved.