преобразовать вывод оболочки в float64? - PullRequest
0 голосов
/ 05 июля 2019

Я использую оболочку с golang для доступа к файлу журнала apache и получения некоторых данных.Сначала я записывал выходные данные в файл напрямую, и он работал, но теперь мне нужно получить выходные данные и использовать их непосредственно в программе.а также мне нужно преобразовать его в float64.Я пытался преобразовать его в строку, а затем в float64, но он не работает?

func Mem_usage_data(j int) (Mem_predict float64, err error) {
    awkPart := fmt.Sprintf("awk '{print $%d/1024}'", j)

    out1, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log| "+awkPart+" ").Output()
    fmt.Println("memory usage is", out1)
    s1 := string(out1)
    v1, err1 := strconv.ParseFloat(s1, 64)
    if err1 != nil {
        fmt.Println(err)
    }
    if err != nil {
        fmt.Println(err)
    }
    return v1, err
}

когда я печатаю out1, я получаю что-то вроде этого [48 46 49 50 48 49 49 55 10].Можете ли вы помочь, как получить точный вывод в out1 и как преобразовать его в float64?

1 Ответ

2 голосов
/ 05 июля 2019

Преобразование завершается неудачно, возможно, из-за того, что в s1 есть какой-то пробел или символ новой строки. Попробуйте обрезать его, прежде чем делать преобразование. Для этого используйте strings.TrimSpace().

v1, err1 := strconv.ParseFloat(strings.TrimSpace(s1), 64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...