首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将shell脚本打包到leiningen项目中

如何将shell脚本打包到leiningen项目中
EN

Stack Overflow用户
提问于 2012-09-18 01:37:31
回答 2查看 547关注 0票数 4

我在scripts/shell/record_video.sh中保存了一个shell脚本,需要调用我的一个项目。

它在代码中的使用示例:

代码语言:javascript
运行
复制
(defn save-mp4 [cam filename duration]
  (sh "scripts/shell/record_video.sh" (:i_url cam) filename (str duration)))

如果我上传到clojars,我如何才能将该项目打包,从而包含shell脚本?

跟进

谢谢@Ankur。(sh "bash" :in bash-command-string)非常有用。首先,我需要.sh文件的唯一原因是,当stdout包含一些很大的内容(比如视频)时,我无法完全搞清楚如何进行重定向。

文件scripts/shell/record_video.sh包含:

代码语言:javascript
运行
复制
SRC=rtsp://$1:554/axis-media/media.amp?resolution=1920x1080
DST=$2
LEN=$3
openRTSP -4 -d $LEN -w 1440 -h 1080 -f 25 -u root pass $SRC > $DST 2> /dev/null

而且我不知道如何在不增加程序内存消耗的情况下翻译重定向(>)。(sh "bash" :in bash-command-string)命令允许在没有shell脚本的情况下编写函数:

代码语言:javascript
运行
复制
(defn save-mp4 [cam filename duration]
  (let [src (format "rtsp://%s:554/axis-media/media.amp?resolution=1920x1080" (:i_url cam))
        cmd (format "openRTSP -4 -d %d -w 1440 -h 1080 -f 25 -u root pass %s > %s 2> /dev/null"
                    duration src filename)]
    (sh "bash" :in cmd)))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-18 07:17:30

两个步骤:

  • 将shell脚本打包为资源。
  • 使用java资源API读取shell脚本文件并使用(sh "bash" :in file-str)

其中文件str是使用资源API读取的shell脚本内容。

票数 3
EN

Stack Overflow用户

发布于 2012-09-18 03:25:23

你实际上有两个问题。首先,如何将文件放入jar文件。其次,如何从jar文件中访问该文件。

第一种方法非常简单:将文件包含在资源目录中。该目录中的所有文件都包含在jar文件中。

第二个问题比较困难,因为sh将在磁盘上寻找脚本,而不是嵌套在jar文件中。您可能必须使用类loader.getresource提取文件,并将其写入磁盘以执行该文件。

有一个关于如何从jar读取资源的discussion,最简单的是(clojure.java.io/resource "myscript.js")

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12469259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档