Bash 67 chars
read t u d w
echo -e '\t'|expand -t $d|sed 's/^/8/;s/ /=/g;s/$/B/;'
invocation to the letter of the assignment:
uptime | ./cg1570uptime-bar.sh
Much shorter
just 54 chars:
with this variation:
echo -e '\t'|expand -t $3|sed 's/^/8/;s/ /=/g;s/$/B/;'
invocation, not 100% in accordance with the rules:
./cg1570uptime-bar.sh $(uptime)
output in both times:
uptime && uptime | ./cg1570uptime-bar.sh
06:29:53 up 16 days, 21:03, 10 users, load average: 1.29, 1.34, 1.23
8================B
Non-everyday tricks:
read t u d w
reads 06:29:53=t, up=u, 16=d rest...=w
without w, everything to the end would be put into $d.
expand is normally used to translate a tab into an amount of blanks and takes a parameter if you don't like 8.
Grabbing the 3rd parameter with $3 in echo -e '\t'|expand -t $3|sed 's/ /=/g'
is even shorter, but needs an invocation, not fitting to the words of the rules.