小编Kul*_*lix的帖子

使用 System.cmd 时带有通配符的 Elixir shell 命令失败

我有一个 elixir 程序,需要以编程方式删除可变数量的 PNG 文件。

/path/to/dir/<uuid>-frames-001.png
/path/to/dir/<uuid>-frames-002.png
/path/to/dir/<uuid>-frames-003.png
Run Code Online (Sandbox Code Playgroud)

等等。

自然,我想出了以下长生不老药代码来删除这些文件。

System.cmd("rm", ["/path/to/dir/" <> uuid <> "-frames-*.png"])
Run Code Online (Sandbox Code Playgroud)

我已经看到上面的代码以多种方式失败。首先,我在服务器上运行它并看到以下堆栈跟踪:

/bin/rm: cannot remove '/path/to/dir/<uuid>-frames-*.png': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我还在控制台会话中运行了此代码,并看到了完全相同的输出。

如果我在 bash 会话中运行以下命令,它工作正常!

rm /path/to/dir/<uuid>-frames-*.png

它返回一个0错误代码并删除预期的文件。似乎 elixir 将 the 解释*为文字字符,而不是执行预期的通配符删除。知道如何做到这一点吗?谢谢!

聚苯乙烯

显然,<uuid>是一个实际的 uuid,因此不应该从字面上解释这个问题的范围。

elixir phoenix-framework

5
推荐指数
1
解决办法
576
查看次数

标签 统计

elixir ×1

phoenix-framework ×1