A wc
egy külső parancs, amit szabvány shellből is meg lehet hívni. Ami pedig a subshell-t illeti, ha subshellbe rakod a ciklust is, akkor ki tudod echozni belőle a változódat:
#!/bin/sh
a="
asd
qwe r
v x"
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 $RMAXW
Így a RMAXW
változóban megkaptad a legszélesebb sor hosszát, azaz az ASCII-art valódi szélességét. És ez POSIX shellből is megy.