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