( TCH | 2020. 02. 08., szo – 19:12 )

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.