volumen usar teclado subir restaurar puedo pro para macbook mac latino funciones español desde desconfigurado configurar como comandos f# shebang

f# - usar - teclado mac desconfigurado



¿Qué shebang debería usar para las secuencias de comandos F#en Mac OS X? (2)

En Mac OS X, el programa es fsharpi .

hello.fs:

#light (* exec fsharpi --exec $0 --quiet *) System.Console.WriteLine "Hello World"

Tengo F # 2.0 instalado con Mono, y me gustaría ./ mis scripts F #. ¿Qué línea de shebang debería usar para Mac OS X? ¿Puede esta línea shebang generalizarse para Mac OS X y Linux?


Por lo tanto, en la respuesta de @ mcandre, funciona porque la mayoría de las conchas vuelven al caparazón de bourne cuando no encuentran un shebang.

Así que tener #light que es tanto F # válido como un comentario en bourne shell permite que cada entorno de scripting vea lo que entiende.

Sin embargo, el guión adentro podría mejorarse. Cuando ejecutamos un script que agrega --quiet to --exec parece redundante, también esperamos que todos los argumentos pasen al script. Una versión más ideal sería exec fsharpi --exec $0 $* para que todos los argumentos se pasen como si ejecutara el comando explícitamente.

#light no es la única directiva # precedida en F #. El preprocesador define también funcionaría y podría ser intuitivo para lo que está sucediendo. Poner un script de shell entre #if run_with_bin_sh y #endif sería invisible para f #, ya que run_with_bin_sh no se definiría.

Ejemplo fsx:

#if run_with_bin_sh exec fsharpi --exec $0 $* #endif printfn "%A" fsi.CommandLineArgs

Actualización: El soporte real de shebang como #!/usr/bin/env fsharpi --exec se ha agregado a la base de código oficial de Microsoft F # . Por lo tanto, debería funcionar con versiones futuras de F #.

actualización 2: #!/usr/bin/env fsharpi --exec funciona muy bien para mac, pero no en Linux. Linux necesita ser #!/usr/bin/fsharpi --exec la incompatibilidad es molesta.

Si quieres una plataforma cruzada, fsharp shebang. Lo siguiente funcionará.

#!/bin/sh #if run_with_bin_sh exec fsharpi --exec $0 $* #endif