如何使用来自 Ammonite 脚本的资源?
Posted
技术标签:
【中文标题】如何使用来自 Ammonite 脚本的资源?【英文标题】:How to use resources from an Ammonite script? 【发布时间】:2020-09-16 23:50:18 【问题描述】:我有一些菊石脚本,它们存储在一个文件夹中。该文件夹位于我的 PATH 上,因此无论身在何处,我都可以轻松调用这些脚本。
我可以在同一个文件夹中导入其他菊石脚本:
$import $file.<name_of_the_other_script>
但是我想“导入”一个简单的文本文件,将其内容保存为字符串并稍后使用。
我能做到:
val myString = os.read(os.root/"absolute"/"path"/"to"/"the"/"file")
但出于显而易见的原因,我不想使用绝对路径。相对路径不起作用,因为它是相对于我从中调用脚本的文件夹,而不是相对于脚本所在的位置。
有什么办法可以做到吗?
编辑:
#/bin/bash
echo $BASH_SOURCE
如果上述 bash 脚本中的功能可以在 Ammonite 中复制,问题就可以轻松解决。
【问题讨论】:
【参考方案1】:我认为您可以像这样使用ammonite.ops
阅读资源:
val resourcePath = resource/'test/'ammonite/'ops/'folder/"file.txt"
read(resourcePath).length ==> 18
read.bytes(resourcePath).length ==> 18
read.lines(resourcePath).length ==> 1
请参阅 Ammonite 文档中的 Reading Resources。
【讨论】:
问题是资源根文件夹不是原脚本文件所在的文件夹。所以这样我就无法访问与原始脚本位于同一文件夹中的文件。以上是关于如何使用来自 Ammonite 脚本的资源?的主要内容,如果未能解决你的问题,请参考以下文章
Ammonite: Script ... 不接受参数(在 OS X 下)