首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于Mac中的F#脚本,我应该使用哪一种方法?

对于Mac中的F#脚本,我应该使用哪一种方法?
EN

Stack Overflow用户
提问于 2012-11-10 05:43:45
回答 3查看 1.3K关注 0票数 13

我已经在Mono中安装了F# 2.0,我想要./我的F#脚本。对于Mac,我应该使用哪一行?这条线能推广到Mac和Linux吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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:

代码语言:javascript
运行
复制
#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 这种不相容是令人讨厌的。

如果你想要一个交叉平台的话。以下内容将有效。

代码语言:javascript
运行
复制
#!/bin/sh
#if run_with_bin_sh
  exec fsharpi --exec $0 $*
#endif
票数 8
EN

Stack Overflow用户

发布于 2012-11-10 06:06:30

注意到 fsharpi已经被dotnet fsi取代了。见这个答案

在Mac中,程序是fsharpi

hello.fs:

代码语言:javascript
运行
复制
#light (*
    exec fsharpi --exec $0 --quiet
*)

System.Console.WriteLine "Hello World"
票数 8
EN

Stack Overflow用户

发布于 2020-09-18 05:01:01

安装了最新的跨平台.net和最新的linux (coreutil 8.30 <=)和bsd / mac os版本。您可以对F# .fsx脚本使用下面的shebang。

代码语言:javascript
运行
复制
#!/usr/bin/env -S dotnet fsi
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13319632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档