Tényleg? Nézzük meg Zahy megoldása nélkül az eredeti javaslatomat:
#!/bin/sh
a=`cat "$1"`
MAXW=0
RMAXW=$(echo "$a" | (while read -r line;
do
CW=`echo "$line" | wc -m`
if [ "$MAXW" -le "$CW" ];
then
MAXW="$CW"
fi
done
echo $MAXW))
echo "Width: ""$RMAXW"" ch."
root@Csabi:~# time for i in {1..50}; do asciiwidetest1 asciiart.txt >/dev/null; done
real 0m3,235s
user 0m0,144s
sys 0m0,272s
Ez még így is ~11x gyorsabb, mint a karakterenkénti feldolgozás (~36 sec vs. ~3.2 sec).
> Mondjuk a ciklus körüli subshell még mindig felesleges...
Nem az. Ha leszedem, a végeredmény nulla lesz. Próbáld ki.