OCaml shebang语法错误

OCaml shebang语法错误,ocaml,syntax-error,shebang,Ocaml,Syntax Error,Shebang,与Erlang类似,OCaml允许在脚本模式下使用shebang,但在编译模式下使用borks。OCaml中是否有一个更为惯用的shebang,在编译过程中不会触发语法错误?据我所知,没有一个指令同时适用于顶级和OCaml编译器,但您可以使用ocamlscript作为中间选项 ocamlscript在后台使用ocamlfind+ocamlopt在执行代码时(重新)编译代码。安装ocamlscript后,您可以使用: $ cat hello.ml #!/usr/bin/env ocamlrun

与Erlang类似,OCaml允许在脚本模式下使用shebang,但在编译模式下使用borks。OCaml中是否有一个更为惯用的shebang,在编译过程中不会触发语法错误?

据我所知,没有一个指令同时适用于顶级和OCaml编译器,但您可以使用ocamlscript作为中间选项

ocamlscript在后台使用ocamlfind+ocamlopt在执行代码时(重新)编译代码。安装ocamlscript后,您可以使用:

$ cat hello.ml 
#!/usr/bin/env ocamlrun ocaml

let rec main = print_string "Hello World!\n"

$ ./hello.ml 
Hello World!

$ ocaml hello.ml 
Hello World!

$ ocamlc -o hello hello.ml 
File "hello.ml", line 1, characters 0-1:
Error: Syntax error

$ ocamlopt -o hello hello.ml 
File "hello.ml", line 1, characters 0-1:
Error: Syntax error

它不提供直接的顶级兼容性,但允许您避免对许多程序执行单独的编译步骤。该网站有不错的文档和示例。

只需使用
sed
作为预处理器即可。要移除第一行上的shebang,如果找到,请通过:

#!/usr/bin/env ocamlscript

ocamlc
ocamlopt

Bah,ocamlscript无法在Mac OS X中编译。错误:找不到
ocamlfind
。是否安装了ocamlfind?它是ocamlscript所必需的。请确保您有ocamlfind,这是OCaml的标准,您应该始终有。我一直在Mac上使用ocamlscript,没有问题。谢谢。顺便说一句,ocamlfind无法在Mac OS X上安装,因此我将就此联系作者。在OS X上编译
ocamlfind
从来没有遇到过问题。您可能需要尝试
/configure&&make&&sudo make install
路由。谢谢。我不想要求OCaml用户仅仅为了处理shebang行而使用特殊的编译标志,但我很高兴您能做到这一点。如果编译器自动删除shebang,那就太酷了。也许是一个增强的请求。你能问他们吗?你知道的更多,所以他们更可能听你的。
-pp 'sed "1 s/^#\!.*$//"'