gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:24:14 26 4
gpt4 key购买 nike

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

在代码中使用它的示例:

(defn save-mp4 [cam filename duration]
(sh "scripts/shell/record_video.sh" (:i_url cam) filename (str duration)))

如果我上传到 clojars,我如何能够 jar 项目以便包含 shell 脚本?

<小时/>

跟进

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

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

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 脚本的情况下编写函数:

(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)))

最佳答案

两步:

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

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

关于clojure - 如何将shell脚本打包到leiningen项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com