51 votes

Quelle est la ligne Go shebang appropriée ?

J'aime utiliser des shebangs pour exécuter mes scripts Perl directement :

 #!/usr/bin/env perl

Qu'est-ce que le shebang pour les programmes de Go ?

46voto

//usr/bin/go run $0 $@ ; exit

Exemple:

 //usr/bin/go run $0 $@ ; exit
package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

allez traiter // comme un commentaire sur une seule ligne et le shell ignore les /

16voto

Evan Shaw Points 7957

Il n'y en a pas par défaut. Il existe cependant un outil tiers appelé gorun qui vous permettra de le faire. https://wiki.ubuntu.com/gorun

Malheureusement, les compilateurs n'aiment pas la ligne shebang. Vous ne pouvez pas compiler le même code que vous exécutez avec gorun.

8voto

Greg Hewgill Points 356191

Les programmes Go sont compilés en binaires ; Je ne pense pas qu'il existe une option pour les exécuter directement à partir de la source.

Ceci est similaire à d'autres langages compilés tels que C++ ou Java. Certains langages (comme Haskell) offrent à la fois un mode entièrement compilé et un mode "script" que vous pouvez exécuter directement depuis la source avec une ligne shebang.

0voto

user3200607 Points 29

Jusqu'à présent, enchaîner sh et gorun s'est avéré être la solution la plus portable pour moi.

 ///bin/sh -c true && exec gorun "$0" "$@"

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {
    fmt.Println("hello")
    log.Printf("args: %v", os.Args)

    // just to test exit code, would be 0x11
    os.Exit(17)
}

SORTIR:

 00:~ $ chmod a+x test.go && ./test.go rawr
hello
2020/01/21 23:17:40 args: [./test.go rawr]
11:~ $ 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X