Ваш вопрос касается только получения одной переменной, но один из подходов заключается в том, чтобы прогнать весь вывод upsc
в среду bash
и выбрать оттуда нужное вам значение. Вот так:
upsc_parser()
{
local upsc_var
local upsc_val
while read
do
upsc_var="${REPLY%: *}"
upsc_val="${REPLY#${upsc_var}: }"
upsc_var="${upsc_var//./_}"
upsc_val="${upsc_val//[\"\'\\]/}"
echo "upsc_${upsc_var}=\"${upsc_val}\""
done
}
eval $(upsc | upsc_parser)
echo $upsc_battery_charge
Это позволяет получить нужное значение и не требует много дополнительной работы, если вы позже решите, что вам нужно другое значение.