用于比较变量和读取变量的脚本

时间:2019-01-01 12:08:47

标签: bash macos

我正在使用MacBook,并且电池不可靠。我正在尝试找到一个脚本命令,当电池电量低于阈值时,它将使笔记本电脑发出哔哔声。

由于帖子重复,我已经对其进行了编辑。

2 个答案:

答案 0 :(得分:0)

您可以使用此脚本来提醒您,当电池电量低于您想要的任何值时,例如低于40%或更多80%“您可以将其更改为您想要的任何值”:

#!/bin/bash
high=$(cat /sys/class/power_supply/BAT0/charge_full_design)
now=$(cat /sys/class/power_supply/BAT0/charge_now)
stat=$(cat /sys/class/power_supply/BAT0/status)
echo -e "scale=1\n$now/$high * 100\nquit"> hi
per=$(bc hi)
per=$(expr "$per" : '\(.*\)\..*')

if [ $stat == Charging ] ; then
if [ $per -gt 80 ] ; then
        zenity --warning --text="BATTERY IS FULL REMOVE THE CHARGER"
fi
elif [ $stat == Discharging ] ; then
if [ $per -lt 40 ] ; then
        zenity --warning --text="BATTERY IS LOW PLUGIN THE CHARGER"

fi
fi
rm hi

此bash代码已在Ubuntu上运行

答案 1 :(得分:0)

感谢您的回复。终于找到了解决方法:

1)我首先创建一个名为check_battery的文件,其内容如下:

ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""]; bat= (max>0?100*c["\"CurrentCapacity\""]/max:"?"); printf("%d", bat)}'

2)然后,我创建了以下文件:

\#!/bin/bash
sh check_battery>battery;
let t=60
read a < battery
if(( "$a" < "$t" ));
  then
  say "Battery level is lower than 60%!";
  say "BEAP BEAP"
fi;

3)最后,我将其添加到我的crontab作业中(这不起作用!)。然后我发现我必须使用launchd代替:( https://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

现在可以在我的MacBook Lab上使用它了...