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