내가 직접 내 Perl 스크립트를 실행하는 데 shebangs를 사용하여 좋아 :Go Shebang 라인은 무엇입니까?
#!/usr/bin/env perl
바둑 프로그램의 오두막 무엇입니까?
내가 직접 내 Perl 스크립트를 실행하는 데 shebangs를 사용하여 좋아 :Go Shebang 라인은 무엇입니까?
#!/usr/bin/env perl
바둑 프로그램의 오두막 무엇입니까?
Go 프로그램은 바이너리로 컴파일됩니다. 소스에서 직접 실행할 수있는 옵션이 없다고 생각합니다.
이것은 C++이나 Java와 같은 다른 컴파일 언어와 유사합니다. 일부 언어 (Haskell과 같은)는 완전히 컴파일 된 모드와 "스크립트"모드를 제공합니다.이 모드는 소스 코드에서 직접 실행할 수 있습니다.
+1 Perl은 인터프리터 스크립팅 언어입니다. –
기본적으로 하나도 없습니다. 하지만 gorun이라는 타사 도구를 사용하면 할 수 있습니다. https://wiki.ubuntu.com/gorun
불행히도 컴파일러는 shebang 행을 좋아하지 않습니다. gorun으로 실행하는 동일한 코드를 컴파일 할 수 없습니다.
Argh. 6g과 친구 bork 그들이 shebang을 볼 때. – mcandre
죄송합니다. 언급 했어야합니다. 편집 됨. –
//usr/bin/go run $0 [email protected] ; exit
예 :
///bin/true; exec /usr/bin/env go run "$0" "[email protected]"
이가있다 : 코멘트 와 쉘 추가 무시 하나의 라인으로
//usr/bin/go run $0 [email protected] ; exit
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
이동 치료 ///
나는이 선호 몇 가지 장점은 هوم에 의해 답변에 비해 جاویدپور :
용도 '간부'는 손자 프로세스를 시작하는 대신 새로운 쉘 프로세스를 교체합니다. 결과적으로 Go 프로그램은 직접적인 하위 프로세스가됩니다. 이것은보다 효율적이며 디버깅 및 모니터링과 같은 일부 고급 상황에서도 중요합니다.
적절한 인수 견적. 공백과 특수 문자는 문제를 일으키지 않습니다.
"///"의 앞부분은 "//"보다 표준을 준수합니다. "//"만 사용하면 구현 정의 동작에 부딪 힐 위험이 있습니다. 이상의 두 문자를 선도 있지만 경로 이름은 두 개의 연속 문자, 선두 문자 후 첫 구성 요소가 구현 정의 된 방식으로 을 해석 할 수있다로 시작하는 경우
: 여기 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html에서 인용입니다 단일 문자로 취급되어야한다.
나는이 답변을 bash, dash, zsh 및 ksh로 테스트했습니다.
예 : 이동이 컴파일
///bin/true; exec /usr/bin/env go run "$0" "[email protected]"
package main
import "fmt"
func main() {
fmt.Println("你好!")
}
사실을 stderr로 출력하고 실행을 끝내는 코드가 0이 아닌 종료 코드를 가진 프로그램 os.Exit()이 종료 코드로 1을 반환하면이를 지적하고 싶습니다. – tmc
이것 또한 대답에 해당합니다. –
'/ bin/true'는 이식성이 없습니다 (예 : OSX 및 Zsh) – Kreisquadratur
. 너는 새끼 먹이가 필요 없어. 권리? –
[golang-nuts의 토론 스레드] (https://groups.google.com/d/msg/golang-nuts/iGHWoUQFHjg/hEhYPQjP3HcJ) [유사한 블로그] (http://stackoverflow.com)와 비슷한 게시물이 있습니다./users/1040891)의 [대답] (http : // stackoverflow.com/a/17900932/109747) –