Датчики и сохранение в переменную

Нет. Символические ссылки будут продолжать указывать на то же место и станут висячими символическими ссылками . Чтобы они указывали на новое местоположение, вы можете либо удалить их и воссоздать их правильно, либо сделать двойное косвенное обращение: создать символические ссылки из текущего местоположения инструментов на новое, чтобы символические ссылки в / usr / local / bin продолжали указывать (хотя на этот раз косвенно) в правильное место.

1
12.11.2018, 04:20
3 ответа

Вы также можете обойти команду sensorsи прочитать значения непосредственно из файловой системы /sys:

VAR1RAW=$(cat /sys/devices/platform/coretemp.0/hwmon/hwmon*/temp1_input)
VAR1=$(expr $VAR1RAW / 1000)
VAR2RAW=$(cat /sys/devices/platform/coretemp.1/hwmon/hwmon*/temp1_input)
VAR2=$(expr $VAR2RAW / 1000)

(Звездочка в элементе пути hwmon*позволяет нам игнорировать номер устройства hwmon :, так как мы входим по маршруту .../platform/coretemp.N/..., на этом уровне будет только один соответствующий каталог.)

Необработанные значения в файловой системе /sysвыражаются в тысячных долях градуса, поэтому вам нужно будет разделить на 1000. Поскольку exprвыполняет только целочисленные арифметические операции, в то же время будут отброшены десятичные дроби..

1
27.01.2020, 23:31

Все это может быть достигнуто с помощью простого awk только с одним вкладышем. Например:

awk '/Core 0:/{i[$3+0];} END { n=1; for(a in i) printf("%s=%d\n", "var"n++,a)}'
  • Шаблон сопоставления/Core 0/
  • Создать переменную массива i[$3+0]. +0удалит все после цифры
  • .
  • Инициализируйте переменную nна 1как в:n=1. Цикл по индексам и вывод результатов путем увеличения переменной n.

NOTE! By convention, environment variables (PATH, EDITOR, SHELL,...) and internal shell variables (BASH_VERSION, RANDOM,...) are fully capitalized. All other variable names should be lowercase. Since variable names are case-sensitive, this convention avoids accidentally overriding environmental and internal variables.

1
27.01.2020, 23:31

Вы можете попробовать что-то вроде:

VAR=$(sensors | sed -rn 's/.*Core 0:\s+.([0-9]+).*/\1/p'|tr '\n' ' ')

Это заменит новую строку пробелом и добавит оба значения к переменной VAR. Если вы хотите разделить их на две переменные, вы можете использовать приведенный ниже код (. Я знаю, что это не оптимально, но у меня работает )

.
VAR1=$(echo $VAR|awk '{print $1}')
VAR2=$(echo $VAR|awk '{print $2}')
0
27.01.2020, 23:31

Теги

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