мой флэш-накопитель не работает?

Задача:

sdout the load avg from top in a decimal form like(e.g 0.23)

Решение:

top -b -n  1  | perl -lane 'print "$1.$2" if /load average: (\d+)[,.](\d+)/'

Примечания:

Получает среднюю нагрузку на 1 м. Похоже, это то, что вы хотите, но вы должны четко это заявить. При необходимости код можно легко изменить для получения средних значений нагрузки за 5 или 15 минут или даже за все три периода.

Как указал @terdon , uptimeможет быть лучшей отправной точкой, чем topв этом случае.

После первых двух строк вы туманно описываете, что хотите сделать с результатом. Последующие шаги, которые вы хотите предпринять, должны стать предметом новых вопросов.

В Perl числа автоматически -преобразуются в строки и наоборот -наоборот. Любая числовая операция может быть выполнена над строкой, представляющей число. например.print "$1.$2"+11.11


Вопрос 2:

Эта часть касается второго вопроса, который совершенно не связан с первым.
Я призываю ОП опубликовать этот вопрос отдельно .

How Can I convert the string value to decimal/float/integer ?

Лучше записывать как :Выполнение числовых сравнений строк с помощью Chef InSpec .

Решение:

Преобразование строки в числовой формат с помощью to_iили to_f.

Пример:

describe command("echo 1.00") do
    its("stdout.to_f") { should be < 1.03 }
end

Пояснение:

Логично, что стандартный вывод рассматривается как строка.Также весьма разумно числовое сравнение требует, чтобы два числа были... числами. К счастью, преобразование можно выполнить с помощью удобных строковых методов Ruby :to_i, to_f, to_rи to_c.

0
19.08.2020, 11:50
0 ответов

Теги

Похожие вопросы