Skip to main content
Code Review

Return to Question

Tweeted twitter.com/StackCodeReview/status/1582068934198452224
Code-fence and spelling
Source Link
Toby Speight
  • 87.5k
  • 14
  • 104
  • 322

Is this code well written? I'm not doing much, just rendering my battery status for my statusbarstatus bar but the code seems pretty long. I am new to bashBash and linuxLinux, so I thought this code could be improved somewhere.

#!/bin/bash
# Send a notification if battery is low, change status in info file accordingly
notify-low () {
 # Battery isn't much but is charging (don't notify)
 [ "$status" = "Charging" ] && return
 # Battery critically low
 if [ "$capacity" -le 10 ] && [ -z "$(grep critically-low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/critical-battery.png -u critical "Battery critically low!" 
 echo "critically-low" > $lowinfo
 # Battery is low 
 elif [ "$capacity" -le 20 ] && [ -z "$(grep low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/low-battery.png -t 5500 "Battery low!"
 echo "low" > $lowinfo
 fi
}
battery="/sys/class/power_supply/BAT0"
status="$(cat "$battery/status")"
capacity="$(cat "$battery/capacity")"
# Get the low battery status from file ~/.cache/battery-low-status
lowinfo="$HOME/.cache/battery-low-status"
[ ! -e "$lowinfo" ] && touch $lowinfo
# Set charging icon and capacity icon
[ "$status" = "Charging" ] && charging_icon=" " || charging_icon=""
[ "$capacity" -gt 100 ] && capacity=100
if [ "$capacity" -lt 15 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 40 ]; then capacity_icon=' '
elif [ "$capacity" -lt 60 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 90 ]; then capacity_icon=' '
else capacity_icon=' ' 
fi
# Report low battery 
[ "$capacity" -le 20 ] && notify-low
# Reset low battery information in these cases
([ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]) && [ -n $(cat "$lowinfo") ] && echo "" > $lowinfo
printf "%s%s%d%%\n" "$charging_icon" "$capacity_icon" "$capacity"```

Is this code well written? I'm not doing much, just rendering my battery status for my statusbar but the code seems pretty long. I am new to bash and linux, so I thought this code could be improved somewhere.

#!/bin/bash
# Send a notification if battery is low, change status in info file accordingly
notify-low () {
 # Battery isn't much but is charging (don't notify)
 [ "$status" = "Charging" ] && return
 # Battery critically low
 if [ "$capacity" -le 10 ] && [ -z "$(grep critically-low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/critical-battery.png -u critical "Battery critically low!" 
 echo "critically-low" > $lowinfo
 # Battery is low 
 elif [ "$capacity" -le 20 ] && [ -z "$(grep low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/low-battery.png -t 5500 "Battery low!"
 echo "low" > $lowinfo
 fi
}
battery="/sys/class/power_supply/BAT0"
status="$(cat "$battery/status")"
capacity="$(cat "$battery/capacity")"
# Get the low battery status from file ~/.cache/battery-low-status
lowinfo="$HOME/.cache/battery-low-status"
[ ! -e "$lowinfo" ] && touch $lowinfo
# Set charging icon and capacity icon
[ "$status" = "Charging" ] && charging_icon=" " || charging_icon=""
[ "$capacity" -gt 100 ] && capacity=100
if [ "$capacity" -lt 15 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 40 ]; then capacity_icon=' '
elif [ "$capacity" -lt 60 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 90 ]; then capacity_icon=' '
else capacity_icon=' ' 
fi
# Report low battery 
[ "$capacity" -le 20 ] && notify-low
# Reset low battery information in these cases
([ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]) && [ -n $(cat "$lowinfo") ] && echo "" > $lowinfo
printf "%s%s%d%%\n" "$charging_icon" "$capacity_icon" "$capacity"```

Is this code well written? I'm not doing much, just rendering my battery status for my status bar but the code seems pretty long. I am new to Bash and Linux, so I thought this code could be improved somewhere.

#!/bin/bash
# Send a notification if battery is low, change status in info file accordingly
notify-low () {
 # Battery isn't much but is charging (don't notify)
 [ "$status" = "Charging" ] && return
 # Battery critically low
 if [ "$capacity" -le 10 ] && [ -z "$(grep critically-low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/critical-battery.png -u critical "Battery critically low!" 
 echo "critically-low" > $lowinfo
 # Battery is low 
 elif [ "$capacity" -le 20 ] && [ -z "$(grep low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/low-battery.png -t 5500 "Battery low!"
 echo "low" > $lowinfo
 fi
}
battery="/sys/class/power_supply/BAT0"
status="$(cat "$battery/status")"
capacity="$(cat "$battery/capacity")"
# Get the low battery status from file ~/.cache/battery-low-status
lowinfo="$HOME/.cache/battery-low-status"
[ ! -e "$lowinfo" ] && touch $lowinfo
# Set charging icon and capacity icon
[ "$status" = "Charging" ] && charging_icon=" " || charging_icon=""
[ "$capacity" -gt 100 ] && capacity=100
if [ "$capacity" -lt 15 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 40 ]; then capacity_icon=' '
elif [ "$capacity" -lt 60 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 90 ]; then capacity_icon=' '
else capacity_icon=' ' 
fi
# Report low battery 
[ "$capacity" -le 20 ] && notify-low
# Reset low battery information in these cases
([ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]) && [ -n $(cat "$lowinfo") ] && echo "" > $lowinfo
printf "%s%s%d%%\n" "$charging_icon" "$capacity_icon" "$capacity"
Source Link
Diwas
  • 111
  • 4

A shell script to get the current battery status

Is this code well written? I'm not doing much, just rendering my battery status for my statusbar but the code seems pretty long. I am new to bash and linux, so I thought this code could be improved somewhere.

#!/bin/bash
# Send a notification if battery is low, change status in info file accordingly
notify-low () {
 # Battery isn't much but is charging (don't notify)
 [ "$status" = "Charging" ] && return
 # Battery critically low
 if [ "$capacity" -le 10 ] && [ -z "$(grep critically-low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/critical-battery.png -u critical "Battery critically low!" 
 echo "critically-low" > $lowinfo
 # Battery is low 
 elif [ "$capacity" -le 20 ] && [ -z "$(grep low $lowinfo)" ]; then
 notify-send -i $HOME/.config/icons/low-battery.png -t 5500 "Battery low!"
 echo "low" > $lowinfo
 fi
}
battery="/sys/class/power_supply/BAT0"
status="$(cat "$battery/status")"
capacity="$(cat "$battery/capacity")"
# Get the low battery status from file ~/.cache/battery-low-status
lowinfo="$HOME/.cache/battery-low-status"
[ ! -e "$lowinfo" ] && touch $lowinfo
# Set charging icon and capacity icon
[ "$status" = "Charging" ] && charging_icon=" " || charging_icon=""
[ "$capacity" -gt 100 ] && capacity=100
if [ "$capacity" -lt 15 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 40 ]; then capacity_icon=' '
elif [ "$capacity" -lt 60 ]; then capacity_icon=' ' 
elif [ "$capacity" -lt 90 ]; then capacity_icon=' '
else capacity_icon=' ' 
fi
# Report low battery 
[ "$capacity" -le 20 ] && notify-low
# Reset low battery information in these cases
([ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]) && [ -n $(cat "$lowinfo") ] && echo "" > $lowinfo
printf "%s%s%d%%\n" "$charging_icon" "$capacity_icon" "$capacity"
```
lang-bash

AltStyle によって変換されたページ (->オリジナル) /