mca*_*dre 2 shell ocaml comments shebang multiline
简而言之,我想抽象这个shebang所以我可以将它复制并粘贴到其他.ML文件中,而不必每次都指定文件名:
#!/usr/bin/env ocamlscript -o hello
print_endline "Hello World!"
Run Code Online (Sandbox Code Playgroud)
我意识到我可以放弃-o hello一点,但我希望所有二进制文件都有UNIX名称(hello),而不是Windows名称(hello.ml.exe).
你需要一个复杂的shebang才能做到这一点.具有所需行为的Clojure示例:
":";exec clj -m `basename $0 .clj` $0 ${1+"$@"}
":";exit
Run Code Online (Sandbox Code Playgroud)
Clojure是基于Java的,这就是为什么clj需要文件的基名(something而不是something.clj).为了获得基本名称,你需要一个多行的shebang,因为单行shebang只能处理一个简单的静态命令行参数.为了做多行的shebang,你需要一个同时的语法:
有没有人知道OCaml诡计这样做?我试过以下但没有成功:
(*
exec ocamlscript -o `basename $0 .ml` $0 ${1+"$@"}
exit
*)
let rec main = print_endline "Hello World!"
Run Code Online (Sandbox Code Playgroud)
您正在寻找的是一个shell和Objective Caml多语言(其中shell部分调用一个ocaml解释器来执行实际工作).这是一个相对简单的问题.ocamlscript必要时适应使用,虽然我没有看到重点.
#!/bin/sh
"true" = let exec _ _ _ = "-*-ocaml-*- vim:set syntax=ocaml: " in
exec "ocaml" "$0" "$@"
;;
(* OCaml code proper starts here *)
print_endline "hello"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |