评论由:pesterhazy 提出
关于替代方案,Bash 代码需要能够读取 .main
文件,并将内容拆分为单个参数。理想情况下,这应该仅使用 Bash 内置功能完成,即不启动另一个进程。
使用纯 Bash 无法解析 JSON 或 EDN。另一种可能性是将参数通过换行符分隔。但将读取数据回数组中的 Bash 代码不会太简单,或者至少不像使用 eval
解析内容那样简单。
使用 eval 内置函数的潜在缺点是,与 Clojure 读取器一样,Bash 读取器可能会有副作用。例如,当内容包含 $(rm /important/file)
或 >/important/file
时。
然而,我们控制着写入文件的代码,并转义所有字符。因此,美元和大于号前面应该加反斜杠。我认为这是安全的。
我必须考虑回溯/前向兼容性 - 这是一个很好的观点。