Mam F # 2.0 zainstalowany z Mono, i chciałbym ./
moje skrypty F #. Jakiej linii powinienem używać Mac OS X? Czy ta wąska linia może zostać uogólniona dla systemów Mac OS X i Linux?Którego shebang powinienem użyć dla skryptów F # w Mac OS X?
Odpowiedz
Więc w odpowiedzi @ mcandre jest, to działa, bo most shells revert to bourne shell gdy nie znaleźć shebang.
Posiadanie , które jest zarówno poprawnym F #, jak i komentarzem w powłoce bourne, pozwala każdemu środowisku skryptowemu zobaczyć, co rozumie.
Scenariusz wewnątrz można jednak poprawić. Kiedy wykonamy skrypt dodając --quiet
do --exec
wydaje się zbędny, również oczekujemy, że wszystkie argumenty zostaną przekazane do skryptu. Bardziej idealną wersją będzie exec fsharpi --exec $0 $*
, więc wszystkie argumenty będą przekazane tak, jakbyś jednoznacznie uruchomił komendę.
#light
to nie jedyna #
poprzedzona dyrektywą w F #. Definicja preprocesora również zadziała i może być intuicyjna w stosunku do tego, co się dzieje. Umieszczenie skryptu powłoki między #if run_with_bin_sh
i #endif
będzie niewidoczne dla f #, ponieważ run_with_bin_sh
nie zostanie zdefiniowane.
Przykład FSX:
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endif
printfn "%A" fsi.CommandLineArgs
zmiana: Prawdziwe wsparcie shebang takich jak #!/usr/bin/env fsharpi --exec
było dodać do official Microsoft F# code base. Powinno więc działać z przyszłymi wersjami F #.
aktualizacja 2:#!/usr/bin/env fsharpi --exec
działa świetnie na mac, ale nie na Linuksie. Linux musi być #!/usr/bin/fsharpi --exec
the incompatibilty is annoying.
Jeśli chcesz mieć platformę fsharp na wielu platformach. Poniższe będą działać.
#!/bin/sh
#if run_with_bin_sh
exec fsharpi --exec $0 $*
#endif
W systemie Mac OS X program to fsharpi
.
hello.fs:
#light (*
exec fsharpi --exec $0 --quiet
*)
System.Console.WriteLine "Hello World"
- 1. Jak piszesz program dla Mac OS X?
- 2. Którego adaptera CouchDB dla Ruby powinienem użyć?
- 3. , którego z == i =: = powinienem użyć?
- 4. Instalacja Pygame dla Mac OS X 10.6.8
- 5. Klasa UIDevice dla Mac OS X?
- 6. Mac OS X: Gdzie powinienem przechowywać typowe dane aplikacji?
- 7. A MapKit dla Mac OS X?
- 8. ldconfig dla systemu Mac OS X
- 9. widok Androida lub surfaceView, którego powinienem użyć?
- 10. JNotify w systemie Mac OS X?
- 11. Kompilowanie SOILu OpenGL na Mac OS X
- 12. Aktualizacje aplikacji w systemie Mac OS X
- 13. Jak skonfigurować libusb na Mac OS X?
- 14. grep -f na OS X produkuje segfault
- 15. mongod, Mac OS X - rlimits ostrzegawcze
- 16. Mac OS X libcurl dylib wersja kompatybilności
- 17. /proc/uptime w systemie Mac OS X
- 18. Odinstalowywanie pakietów w systemie Mac OS X
- 19. Jak ustawić ffmpeg dla matplotlib w mac os x
- 20. Zignoruj puste wyniki dla xargs w systemie Mac OS X
- 21. Testy pisania dla plików skryptów w F #
- 22. linia poleceń IntelliJ na Mac OS X
- 23. Mac OS X darmowe kompilator C
- 24. Instalacja/aktualizacja gradle na Mac OS X
- 25. Włączanie Xdebug na Mac OS X Lion
- 26. Jak zainstalować mod_jk na Mac OS X
- 27. Jaka jest różnica między mapami klawiszy - Mac OS X i Mac OS X 10.5+?
- 28. Uprawnienia XAMPP na Mac OS X?
- 29. Instalacja RVM wisi na Mac OS X
- 30. Jak zainstalować wxPython na Mac OS X?
Myślę, że może to być problematyczne, ponieważ '#' nie jest komentarzem w języku F # - może lepiej napisać prosty skrypt bash. Jeśli mówisz o skompilowanych skryptach, dla Linux-a jest łatka jądra, która powoduje, że '. /' Działa - nie ma pewności co do mac –
@JohnPalmer Tak, brak komentarzy '# 'w F # i innych językach sprawia, że shebang są trudniejsze, choć nie niemożliwe. http://rosettacode.org/wiki/Multiline_shebang – mcandre
który jest całkiem schludny - możesz ukryć tam cały skrypt bash, który może pozwolić ci na przenoszenie rzeczy przenośnych –