我已经在Mono中安装了F# 2.0,我想要./我的F#脚本。对于Mac,我应该使用哪一行?这条线能推广到Mac和Linux吗?
发布于 2014-02-22 02:39:08
所以,在@mcandre的回答中,它起了作用,因为大多数shell恢复为bourne shell。在他们找不到她的时候。
因此,有了#light (它既是有效的F#,又是bourne中的注释),每个脚本环境都可以查看它理解的内容。
但是,内部的脚本可以改进。当我们执行一个将--quiet添加到--exec的脚本时,我们也期望将所有的参数传递给脚本。更理想的版本是exec fsharpi --exec $0 $*,因此所有参数都将被传递,就像您显式地运行命令一样。
#light并不是F#中唯一先于指令的#。预处理器定义也可以工作,并且可以直观地了解正在发生的事情。在#if run_with_bin_sh和#endif之间放置一个shell脚本对于f#来说是不可见的,因为run_with_bin_sh不会被定义。
示例fsx:
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endif
printfn "%A" fsi.CommandLineArgs更新: Real支持(如#!/usr/bin/env fsharpi --exec )已经添加到官方微软F#代码库中。因此,它应该适用于未来版本的F#。
更新2: #!/usr/bin/env fsharpi --exec对mac非常有用,但在linux上却不行。Linux需要是#!/usr/bin/fsharpi --exec 这种不相容是令人讨厌的。
如果你想要一个交叉平台的话。以下内容将有效。
#!/bin/sh
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endifhttps://stackoverflow.com/questions/13319632
复制相似问题