如何在bash中保留变量的前一个值



我制作了一个小程序来管理笔记本电脑的屏幕亮度。问题是,当我覆盖BRIGHTNESSCTRL变量时,我会覆盖它,并且之前的值会被擦除,所以当我使用该程序时,它总是将亮度设置为20000,任何帮助都会得到赞赏。顺便说一下,这是我的节目。

#!/bin/bash
echo 'Actual brightness:' ; cat /sys/class/backlight/intel_backlight/actual_brightness 
cat /sys/class/backlight/intel_backlight/actual_brightness > BRIGHTNESSCTRL
let "BRIGHTNESSCTRL=BRIGHTNESSCTRL+10000"
if [[ $BRIGHTNESSCTRL -gt 96000 ]] ; then BRIGHTNESSCTRL=96000 ; fi && echo 'Success' || echo 'Failure' 
echo $BRIGHTNESSCTRL
sudo echo $BRIGHTNESSCTRL > /sys/class/backlight/intel_backlight/brightness ; echo $BRIGHTNESSCTRL

您似乎混淆了文件和shell变量。第一个命令将原始值写入文件,但您永远不会读取该文件。

你的问题很不清楚,但我猜你正在寻找类似的东西

#!/bin/bash
brightness=$(cat /sys/class/backlight/intel_backlight/actual_brightness)
echo "Actual brightness: $brightness"
brightness=$((brightness+10000))
if [[ $brightness -gt 96000 ]] ; then
brightness=96000
fi
echo $brightness | sudo tee /sys/class/backlight/intel_backlight/brightness

目前还不清楚你希望echo "Success"echo "Failure"在什么时候发生,所以我把它们去掉了。请注意,sudo只提供对您运行的单个命令(在您的情况下,是echo(的特权访问,而不提供对shell执行的任何重定向的特权访问。对于私有变量,您应该更喜欢小写。

相关内容

最新更新