./
F# 2.0 を Mono と共にインストールしていますが、F# スクリプトを使用したいと考えています。Mac OS X ではどのシバン行を使用すればよいですか? このシバン行は、Mac OS XおよびLinux 用に一般化できますか?
3 に答える
したがって、@ mcandreの回答では、シバンが見つからない場合、ほとんどのシェルがボーンシェルに戻るため、機能します。
その#light
ため、有効な F# と bourne シェルのコメントの両方を保持することで、各スクリプト環境が何を理解しているかを確認できます。
ただし、内部のスクリプトは改善される可能性があります。追加するスクリプトを実行する--quiet
と--exec
冗長に見えますが、すべての引数がスクリプトに渡されることも期待されます。より理想的なバージョンはexec fsharpi --exec $0 $*
、コマンドを明示的に実行したかのようにすべての引数が渡されるようにすることです。
#light
F# で先行する唯一の#
ディレクティブではありません。プリプロセッサの定義も機能し、何が起こっているのかを直感的に理解できます。#if run_with_bin_sh
と の間にシェル スクリプトを配置すると、定義されない#endif
ため、f# からは見えなくなります。run_with_bin_sh
例 fsx:
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endif
printfn "%A" fsi.CommandLineArgs
更新:などのリアル シバン サポートが公式の Microsoft F# コード ベース#!/usr/bin/env fsharpi --exec
に追加されました。したがって、F# の将来のバージョンで動作するはずです。
更新 2: #!/usr/bin/env fsharpi --exec
Mac ではうまく機能しますが、Linux では機能しません。Linux は非互換である必要があり#!/usr/bin/fsharpi --exec
、面倒です。
クロスプラットフォームの fsharp シバンが必要な場合。以下が機能します。
#!/bin/sh
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endif
NOTE fsharpi
は に置き換えられましたdotnet fsi
。この回答を参照してください。
Mac OS X では、プログラムはfsharpi
.
こんにちは.fs:
#light (*
exec fsharpi --exec $0 --quiet
*)
System.Console.WriteLine "Hello World"