执行F#脚本

时间:2010-03-17 02:02:01

标签: .net f#

我正在尝试通过在F#中编写小型控制台脚本来代替我编写shell脚本/批处理文件的常用方法来练习我的F#。我目前使用“fsi script.fsx [args]”运行它们。有没有办法可以将这些fsx文件与fsi关联起来,以便我可以直接运行它们,如“script.fsx [args]”?

5 个答案:

答案 0 :(得分:8)

是的,这是可能的。

这里有两个关键:

  1. 您需要将要执行的应用程序绑定到“.fsx”扩展名。执行此操作的确切方法可能会在操作系统版本之间略有不同(我之前只通过直接编辑注册表来完成此操作,因此我无法在此处提供通用解决方案);确保要执行的命令包含脚本参数(如%*),因此绑定注册表中的shell \ open \ command条目应如下所示

    "c:\Program Files\FSharp-1.9.9.9\bin\fsi.exe" "@%1" %*

    有关详细信息,请参阅Gradbot的回复。

  2. 您可能希望将要触发脚本执行的扩展名(在本例中为“.fsx”)添加到PATHEXT环境变量中,因此即使没有指定脚本的扩展名,CMD.exe也可以找到该脚本。警告:如果您担心系统的安全性,请重新考虑此步骤 - VBScripts在默认Windows XP上注册,旧系统提供类似功能的事实在过去被病毒编写者利用(我不知道)如果在Vista或Windows 7上仍然如此。

答案 1 :(得分:4)

由于到目前为止还没有答案,我会尝试将我之前的评论变成一个更详细的答案。

我只是尝试为 *。fsx 文件创建一个标准的Windows关联,以便在 fsi.exe 中自动打开它们并且它没有任何问题 - 当你打开它时 fsx 文件,它运行F#Interactive并自动评估文件的内容。这对应于运行命令:

> fsi.exe test.fsx

但是,我认为通过使用Visual Studio中的F#Interactive来学习F#要容易得多。即使您没有许可证,也可以使用Visual Studio Shell with the free F# plugin。我认为SharpDevelop也提供类似的集成(但可能没有一些限制)。

最简单的方法是创建一个新的“F#脚本”(文件 - >新建 - >文件... ),然后开始编写一些代码(按照各种顺序) 。然后,您可以选择代码的某些部分,并通过持久化[Alt] + [Enter]在F#Interactive窗口中对其进行评估。您首先需要打开F#Interactive窗口,可以使用[Ctrl] + [Alt] + [F]完成,也可以在视图 - >中找到它。其他Windows 菜单项。

我认为大多数F#网络广播以这种方式使用F#Interactive,所以如果你看一些它们,你应该知道如何使用它。例如,在How Do I?www.fsharp.netF# videos at Channel 9个视频中查找。

答案 2 :(得分:2)

搜索“在ubuntu上执行F#脚本”会使您着陆。

要在Mac / Linux上执行.fsx脚本,请写fsharpi yourScript.fsx,对于Windows用户请写:fsi yourScript.fsx

答案 3 :(得分:1)

Here's在Windows 7中设置关联。

答案 4 :(得分:1)

我知道这很旧但是...虽然我完全同意每个人建议进行基于 REPL 的开发,但如果您发现自己编写了一个很好的可重用脚本,那么这里是在 Linux 和 MacOS 上运行良好的脚本。将 *.fsx 脚本放在您的 ~/bin 文件夹或任何地方,然后执行与其他脚本一样的常见 shebang 技巧:

首先制作你的脚本

#!/usr/bin/env dotnet fsi
    
printfn $"1 + 1 = {1 + 1}"

使其可执行并运行它

chmod 755 foo.fsx
$ ./foo.fsx 
1 + 1 = 2