首页 > 解决方案 > 如何在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

标签: linuxbash

解决方案


您似乎将文件与 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 执行的任何重定向。您应该更喜欢私有变量的小写字母


推荐阅读