2016-08-30 3 views
0

Я пытаюсь передать аргумент exec.Command. Часть этого аргумента является переменной.GO - exec.Command с переменными аргументами

a := fileName 
exec.Command("command", "/path/to/"a).Output() 

Я не уверен, как подойти к этому, я думаю, мне нужно, чтобы полностью сформировать аргумент, прежде чем я даже передать его, но я также борется с этой опцией. Я не уверен, как сделать что-то вроде:

a := fileName 
arg := "/path/to/"a 
exec.Command("command", arg).Output() 

ответ

2

В строках Go сцепляются с +,

exec.Command("command", "/path/to/" + a) 

Вы можете также с помощью функции форматирования

exec.Command("command", fmt.Sprintf("/path/to/%s", a)) 

Но в этом в случае, вероятно, более целесообразно использовать filepath.Join

dir := "/path/to/" 
exec.Command("command", filepath.Join(dir, a)) 
+0

Джим, спасибо за обстоятельный список опций. Я согласен, filepath.Join кажется наиболее подходящим решением. –

0

Я обычно использую этот подход:

a := fileName 
cmdArgs := []string{"/path/to/" + a, "morearg"} 
out, err := exec.Command("command", cmdArgs...).Output()