我试着用F#编写小的控制台脚本来练习,而不是像往常一样编写shell脚本/批处理文件。我目前使用"fsi script.fsx [args]"来运行它们。有没有办法将这些fsx文件与fsi关联起来,以便可以直接运行它们,例如"script.fsx [args]"?
我试着用F#编写小的控制台脚本来练习,而不是像往常一样编写shell脚本/批处理文件。我目前使用"fsi script.fsx [args]"来运行它们。有没有办法将这些fsx文件与fsi关联起来,以便可以直接运行它们,例如"script.fsx [args]"?
是的,这是可能的。
这里有两个关键点:
你需要绑定应用程序来执行“.fsx”扩展名的文件。如何做到这一点可能在操作系统版本之间略有不同(我过去只是直接编辑注册表来完成这个操作,所以我无法提供通用的解决方案);确保要执行的命令包括脚本参数(如%*
),使绑定的注册表项中的shell\open\command条目看起来像这样:
"c:\Program Files\FSharp-1.9.9.9\bin\fsi.exe" "@%1" %*
更多细节请参见Gradbot的回答。
> fsi.exe test.fsx
[Alt] + [Enter]
在F# Interactive窗口中评估它。您首先需要打开F# Interactive窗口,可以使用[Ctrl] + [Alt] + [F]
完成,或者您可以在视图 -> 其他窗口菜单项中找到它。
我认为大多数 F# 的网络讲座都使用 F# 交互式,因此如果您查看其中一些讲座,您应该能够很好地了解如何使用它。例如,可以在www.fsharp.net的How Do I?视频或Channel 9 的 F# 视频中查看。
*.fsx
脚本放入您的~/bin文件夹或其他地方,并像对待其他脚本一样使用惯例的shebang技巧:#!/usr/bin/env dotnet fsi
printfn $"1 + 1 = {1 + 1}"
将其设置为可执行并运行
chmod 755 foo.fsx
$ ./foo.fsx
1 + 1 = 2
#!/usr/bin/env -S dotnet fsi
。 (“‘-S’选项指示‘env’将单个字符串拆分为多个参数。”) - Redark如果你搜索“在Ubuntu上执行F#脚本”,那么你就来到了这里。
要在Mac/Linux上执行 .fsx 脚本,输入 fsharpi yourScript.fsx
,对于Windows用户,请输入:fsi yourScript.fsx