#!/bin/bash readarray -t batteries < <(upower -e | grep 'BAT') [[ -z $batteries ]] && exit allstate="" for battery in "${batteries[@]}" do current=$(("$current" + $(upower -i "$battery" | grep -E "percentage" | sed 's/.*://' | sed 's/ *//' | sed 's/\%//'))) state=$(upower -i "$battery" | grep -E "state" | sed 's/.*://' | sed 's/ *//') allstate=$allstate$state done if [[ "$allstate" == *"discharging"* ]]; then state="discharging" elif [[ "$allstate" == *"charging"* ]]; then state="charging" elif [[ "$allstate" == "not-chargingnot-charging" || "$allstate" == "fully-chargedfully-charged" || "$allstate" == "not-charging" || "$allstate" == "fully-charged" ]]; then state="full" else state="N/A" fi echo "$((current/${#batteries[@]}))% $state"