#!/bin/sh unset QUIET MILLIWATTS TOTAL BATTERY="ALL" while getopts "b:mqt" o; do case "${o}" in q) QUIET="y" ;; m) MILLIWATTS="y" ;; t) TOTAL="y" BATTERY="ALL" ;; b) BATTERY="$OPTARG" ;; esac done #TOTALPOWER='0' case "$BATTERY" in "ALL") for battery in $(ls -1 /sys/class/power_supply | grep 'BAT'); do DIRNAME="/sys/class/power_supply/${battery}" if [ -f "${DIRNAME}/power_now" ]; then if [ -n "${MILLIWATTS}" ]; then POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" else POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" fi elif [ -f "${DIRNAME}/current_now" ]; then if [ -n "${MILLIWATTS}" ]; then POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | paste -d' ' -s | awk '{print $1*$2/1e9}' | head -1)" else POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | paste -d' ' -s | awk '{print $1*$2/1e12}' | head -1)" fi fi if [ -n "${TOTAL}" ]; then TOTALPOWER="$(echo "${TOTALPOWER}" "${POWER}" | awk '{print $1+$2}'| head -1)" else if [ -z "${QUIET}" ]; then printf "Power in ${battery} is " fi printf "${POWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else echo " W" fi fi done if [ -n "${TOTAL}" ]; then if [ -z "${QUIET}" ]; then printf "Total power is " fi printf "${TOTALPOWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else echo " W" fi fi ;; *) DIRNAME="/sys/class/power_supply/${BATTERY}" [ -d "${DIRNAME}" ] || echo "No such battery!" if [ -f "${DIRNAME}/power_now" ]; then if [ -n "${MILLIWATTS}" ]; then POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" else POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" fi elif [ -f "${DIRNAME}/current_now" ]; then if [ -n "${MILLIWATTS}" ]; then POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | paste -d' ' -s | awk '{print $1*$2/1e9}' | head -1)" else POWER="$(cat "${DIRNAME}/current_now" "${DIRNAME}/voltage_now" | paste -d' ' -s | awk '{print $1*$2/1e12}' | head -1)" fi fi if [ -z "${QUIET}" ]; then printf "Power in ${BATTERY} is " fi printf "${POWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else echo " W" fi ;; esac