2016-04-24 4 views
0

Я использую следующую команду, чтобы проверить, установлен ли каталог.Как проверить golang, если конкретный каталог имеет mount -bind на нем?

res := exec.Command("mount", "|", "grep", toDir, ">", "/dev/null").Run() 

Но она возвращает exit status 1 независимо от того, если каталог установлен или нет.

mount | grep/path/to/dir>/dev/null

В командной строке работает нормально.

Как я могу получить информацию?

ответ

1

Поскольку ваша команда включает в себя трубу, вы можете передать его в качестве строки команды Баша вместо выполнения его непосредственно. Что-то вроде этого должно работать.

package main 

import (
    "fmt" 
    "os/exec" 
) 

func main() { 
    res, _ := exec.Command("sh", "-c", "mount | grep /home").Output() 
    fmt.Printf("%s", res) 
} 
1

Вы можете использовать язык оборудование для трубопроводов, что-то вроде

c1 := exec.Command("mount") 
c2 := exec.Command("grep", toDir) 
c2.Stdin, _ = c1.StdoutPipe() 
c2.Stdout = os.DevNull 
c2.Start() 
c1.Run() 
c2.Wait()