$(...)
- это подстановка команд. Подстановка команд выполняет команды внутри нее. Здесь он пытается выполнить 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. Используйте в скриптах переменные нижнего регистра.