스칼라 프로그래밍설명하다:
Scala에서 스크립트를 자주 사용하면 스크립트를 호출하는 것이 지루해집니다. Windows 및 Unix 계열 시스템에서는 scala 스크립트 파일 이름으로 호출할 필요가 없는 독립 실행형 Scala 스크립트를 생성할 수 있습니다. Unix 계열 시스템의 경우 다음 예에서는 실행 가능한 스크립트를 만드는 방법을 보여줍니다. chmod +x secho와 같이 권한을 실행 가능하게 만들어야 한다는 점을 기억하세요.
#!/bin/sh # src/main/scala/progscala2/toolslibs/secho exec scala "$0" "$@" !# print("You entered: ") args.toList foreach { s => printf("%s ", s) } println
사용 방법은 다음과 같습니다.
$ secho Hello World You entered: Hello World
이것이 무엇을 의미하는지 알고 싶습니다.
# src/main/scala/progscala2/toolslibs/secho
exec scala "$0" "$@"
!#
존재하다 sh
?
Scala 스크립트를 다음과 같이 독립형으로 만들 수 있습니다.
#!/path/to/scala
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
리눅스에서?
감사해요!
답변1
존재하다 sh
,
# src/main/scala/progscala2/toolslibs/secho
무시된 댓글입니다.
exec scala "$0" "$@"
현재 프로세스가 자신을 으로 대체 scala
하고 모든 셸 인수를 인수로 대체합니다.
!#
이 시점에서 쉘이 스크립트 읽기를 중지했으므로 아무런 효과가 없습니다.
그러나 Scala는 파일 시작 부분의 "헤더"를 무시하여 스크립트 파일을 처리합니다. 이 헤더는 #!
(또는 Windows의 경우) 줄로 시작 ::#!
하고 다음으로 끝납니다.일치 !#
( ::!#
) 또는/env
. 제목은 한 줄이면 됩니다.
#!/path/to/scala
!#
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
그리고
#!/usr/bin/env scala
print("You entered: ")
args.toList foreach { s => printf("%s ", s) }
println
작업합니다(후자는 scala
켜져 있어야 함 PATH
). 후자는 다음과 같습니다.문서.
( 스칼라 에서는 주석 및 C의 .와 유사한 방식으로 에 의해 열린 "제목"을 닫는 데 사용되는 !#
의 대칭입니다 .)#!
#!
/*
*/