парсинг байтов из программы оболочки в моей программе golang - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь вызвать программу оболочки, используя golang (os / exec), но вывод, который я получаю, в байтах, и мне нужно преобразовать его в float64, но он показывает ошибку?
ошибка: невозможно преобразовать (тип [] байт) в тип float64

     func Cpu_usage_data() (cpu_predict float64, err error) {
     out,err1 := exec.Command("/bin/sh","data_cpu.sh").Output()
 if err1 != nil {
      fmt.Println(err1.Error())
    }
  return float64(out), err1
    } 

data_cpu.sh:

  top -b n 1 | egrep -w 'apache2|mysqld|php' | awk '{cpu += $9}END{print cpu/NR}'

1 Ответ

1 голос
/ 04 июля 2019

Используйте bytes.Buffer и strconv.ParseFloat.

func Cpu_usage_data() (cpu_predict float64, err error) {
    cmd := exec.Command("/bin/sh", "data_cpu.sh")
    var out bytes.Buffer
    cmd.Stdout = &out
    err = cmd.Run()
    if err != nil {
        fmt.Println(err.Error())
    }
    cpu_predict, err = strconv.ParseFloat(out.String(), 64)
    if err != nil {
        fmt.Println(err.Error())
    }
    return 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...