#! /bin/sh set -e fun="$1" screen_brightness_device_path="/sys/class/backlight/intel_backlight" # Padding with space because when fun="=10", awk fails to parse fun==10 new=$( awk -v fun=" $fun" ' FILENAME ~ "/max_brightness$" {max = $1; next} FILENAME ~ "/brightness$" {cur = $1; next} END { unit = max / 100 oper = substr(fun, 2, 1) units = substr(fun, 3, length(fun) - 1) if (oper == "=") {new = unit * units} else if (oper == "+") {new = cur + (unit * units)} else if (oper == "-") {new = cur - (unit * units)} else { printf("Unrecognized operator: %s\n", oper) > "/dev/stderr" exit(1) } print int(new) } ' \ "$screen_brightness_device_path/max_brightness" \ "$screen_brightness_device_path/brightness" ) echo "${new}" | tee "${screen_brightness_device_path}/brightness"