2017-10-18 10 views
2

J'essaie de vérifier si un binaire shell existe sur la machine via Go.Vérification de l'existence binaire dans Golang

J'ai essayé quelques commandes shell à base de plus simple:

args := []string{"-x", "fly"} 
    o, err := exec.Command("test", args...).Output() 
    fmt.Println(err) 
    fmt.Println(o) 

Mais cela a une sortie de 1, peu importe quoi et émet rien.

Je me demande s'il y a quelque chose dans Go lui-même qui aurait cette fonctionnalité car évidemment je préfère faire le gros du travail avec go lui-même.

Merci!

+0

@MiloChristiansen est-ce un double possible ou une copie exacte? Je pense que la question n'est pas de vérifier un fichier comme "/home/user/abc.txt", il est plus probable de vérifier si "telnet" fonctionne (dans $ PATH). (Je ne sais pas golang) – JCasso

+0

Je ne peux pas dire, voulez-vous l'équivalent de 'test -x', ou voulez-vous un autre comportement? – JimB

+0

Oui, c'était surtout vérifier pour voir si quelque chose comme telnet fonctionne dans le chemin. La recherche d'un fichier ne fonctionnait pas car je devrais faire un travail supplémentaire pour trouver le chemin complet de l'exécutable. J'essayais de voir s'il y avait quelque chose comme -x dans unix – jaibhavaya

Répondre

2

Voici une façon de vérifier simplement si un fichier existe.

if _, err := os.Stat("/dir/file"); os.IsNotExist(err) { 
    fmt.Printf("File doesn't exist") 
} else { 
    fmt.Printf("Exists") 
} 

En savoir plus: os.Stat(), os.IsNotExist()