Десятичная арифметика c в оболочке отображается как команда не найдена - PullRequest
0 голосов
/ 29 мая 2020

Я намерен уменьшить или увеличить уровни яркости с помощью кода

Ниже приведен мой код

BRIGHTNESS=`xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' '`
z=$($BRIGHTNESS-0.1)
echo "$z"

Я получаю сообщение об ошибке adjust_brightness.sh: line 4: 1.0-0.1: command not found

1 Ответ

1 голос
/ 29 мая 2020

$(...) - это подстановка команд. Подстановка команд выполняет команды внутри нее. Здесь он пытается выполнить 1.0-0.1 как команду.

$((...)) выполняет расширение arithmeti c, обратите внимание на двойные фигурные скобки.

В то время как следующее вызовет расширение arithmeti c :

z=$(($brightness-0.1))

Нет, оболочка не поддерживает арифметические операции с плавающей запятой c, только целые числа. Изучите другие вопросы на этом сайте, как выполнять арифметику с плавающей запятой c в оболочке. Поскольку расширение arithmeti c расширяет также переменные, вы можете удалить $ изнутри. Например, перенаправьте строку, которая будет вычислена, на bc (<<< - это строка здесь):

z=$(bc <<<"$brightness - 0.1")

Примечания:

  • И пока были на нем, сделайте не использовать обратные кавычки `...` вообще. Вместо этого используйте $(...). brightness=$(xrandr --verbose | grep -m 1 -i brightness | cut -f2 -d ' ')
  • ПЕРЕМЕННЫЕ В ВЕРХНЕМ РЕГИСТРЕ по соглашению зарезервированы для экспортируемых переменных, например IFS, LINES, COLUMNS et c. Используйте в скриптах переменные нижнего регистра.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...