clojure - 如何执行拆分字符串作为 Clojure.shell/sh 的参数
问题描述
我有一个类似的命令:
(clojure.java.shell/sh "curl" "https://somesite.com" "-F" "file=@somefile.txt")
我想创建一个函数来运行我提供的标准shell命令......像这样:
(defn run-shell-command [command]
(clojure.java.shell/sh (clojure.string/split command #" ")))
这样我就可以这样称呼它:
(run-shell-command "curl https://somesite.com -F file=@somefile.txt")
但这会引发:
Unhandled java.lang.IllegalArgumentException
No value supplied for key: ["curl" "https://somesite.com" "-F" "file=@somefile.txt"]
我该如何进行这项工作?
(当然,对如何做到这一点的更好想法持开放态度)
解决方案
您还可以使用底层命令处理器来处理字符串。例如使用 bash:
(clojure.java.shell/sh "bash" "-c" command)
...将其包装在一个函数中并根据需要隐藏命令处理器:
(defn run-shell-command [command]
(clojure.java.shell/sh "bash" "-c" command))
然后你可以使用任何 bash shell 命令。例如
(run-shell-command "for i in $(ls); do echo $i; done")
推荐阅读
- avro - AvroData 用架构默认值替换空值
- javascript - 立即停止 Puppeteer 删除文本
- javascript - 使用自动 ID 增量将数据保存在数组中
- reactjs - 从 React 访问输入元素的电子邮件伪类?
- php - 如何使用 wordpress 功能调整图像大小
- python - 我的 'if int(time.time()) % 2 == 0:' 并不总是打印出甚至秒
- php - 使用ajax问题进行实时表编辑和更新
- javascript - 如果不存在则创建新的,否则在firebase中更新
- database - 内存数据库是否使用用户的主内存?
- spring - Koin中的Spring Application Context相当于什么