Groovy 스크립트로 실행해야하는 파일의 시작 부분에 선언 할 수 있습니까? 다른 스크립트 언어에 대한Shebang and Groovy
예 : (즉, 위치 인 경우)
가#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
Groovy 스크립트로 실행해야하는 파일의 시작 부분에 선언 할 수 있습니까? 다른 스크립트 언어에 대한Shebang and Groovy
예 : (즉, 위치 인 경우)
가#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
이 하나 #!/usr/bin/env groovy
당신의 경로를 찾고 검색합니다 스크립트
제한 사항은 Linux에서 shebang을 사용할 때 classpath와 같은 인수를 groovy에 부여 할 수 없다는 것입니다. [이 답변] (http://stackoverflow.com/a/8945888/54396)을 참조하십시오. – Patrick
this에 따르면 당신이 #!/usr/bin/groovy
를 사용할 수 있습니다. 찾고있는 검색어는 shebang
(첫 번째 줄이 무엇인지)입니다.
감사합니다!그 조합 #! 특별한 이름이 있지만 기억하지 못했습니다. – Nulldevice
기억하는 데 도움이된다면 그 줄의 시작 기호는 "날카로운"** # **이고 interrobang **! **, 즉 "shebang"이라는 용어입니다. – mfortner
@mfortner 좋은 니모닉이지만 느낌표는 강타이지만 속어는 아닙니다. [interrobang] (https://en.wikipedia.org/wiki/Interrobang)은 조합 느낌표/물음표 기호 (‽)입니다. –
일반적인 트릭은 또한 "수개 국어"스크립트로 알려진 하나 개 이상의 언어로 의미있는 스크립트를 작성하는 것입니다을 실행할 그루비. 강타와 그루비의 경우
이 특히 쉽게 :
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"
println "Hello from Groovy"
#!
)입니다./bin/true
명령 (no-op)을 호출합니다. PATH에서 groovy 실행 파일을 찾고 스크립트 파일 자체 ("$0"
)와 추가 인수를 사용하여 현재 쉘 프로세스를 대체합니다 (exec
)//
)이기 때문에 무시하고 나머지 스크립트를 실행합니다.좀 더 정교한 쉘 부분을해야 할 경우, 아마도 환경 변수를 설정하거나 그루비가 설치되어있는 경우, 다른 트릭을 사용할 수 있습니다 발견 : 다시
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''
println "Hello from Groovy"
''
다음에 콜론 (no-op)으로 구문 분석합니다. 그것이 exec
또는 exit
"$0"
)'''':
을 긴 문자열 '''
의 시작 부분으로 구문 분석하여 모든 쉘 명령을 건너 뛰고 나머지 스크립트를 실행합니다.
#! 당신이 코멘트로부터 알 수 있듯이, 내가 그것에 대해 알지 못했던 "shebang"이라고 불린다. – Nulldevice
shebang 라인의 첫 번째 단어는 실행 가능한 바이너리 여야한다. "Groovy"프로그램이 쉘 스크립트라면, #!/usr/bin/env groovy 형식을 사용해야합니다. –
재미있는 점은 검색이이 페이지를 정확하게 반환한다는 것입니다. 스택 오버플로는 실제로 이와 같은 간단한 질문에도 최상의 리소스입니다. 다른 사람들은 여기에 직접 와서 다른 블로그 게시물을 탐색하는 대신 권위있는 대답을 얻습니다. –