Как передать временный файл в качестве параметра командной строки - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь использовать временный файл, чтобы передать временный файл в качестве аргумента команде exec.

Я объявляю команду, которую собираюсь использовать, как

CLI_CMD := "/home/go/src/hello/abc.sh"

xmlFile, err := ioutil.TempFile("", hostIP)
command := CLI_CMD + " " + xmlFile.Name()

Наконец, я запускаю команду как

cmd := exec.Command(command)
stdout, err := cmd.Output()

Для подтверждения наличия abc.sh я делаю

[prompt] ls /home/go/src/hello/abc.sh
/home/go/src/hello/abc.sh

Также для подтверждения наличия Tempfile я делаю

[prompt] ls /tmp/10.166.30.47.xml187906126
/tmp/10.166.30.47.xml187906126

Я вижу, что оба этих файла присутствуют здесь с помощью команды ls.Я не понимаю, почему я получаю ошибку, которая не может найти ни один из этих файлов.Кроме того, какой файл не найден здесь, файл .sh или временный файл

2019/03/08 17:50:31 fork/exec /home/go/src/hello/abc.sh /tmp/10.166.30.47.xml187906126: no such file or directory

Я попытался обобщить код, чтобы его было легко понять.

1 Ответ

2 голосов
/ 09 марта 2019

Измените свою часть исполнения следующим образом.

cmd := exec.Command("bash","-c",command)
...