key="${pair%%=*}" # key is everything before = (chop the '=' and everything after it)
val="${pair##*=}" # val is everything after = (chop the '=' and everything before it)
és máris érted te is, meg az utánad jövő is. Attól, mert nem bízol az utánad jövő tudásában (hogy érti a shell összes huncutságát), de pont ugyanennyi erővel az se biztos, hogy a grep, awk, cut és tr eszközöket érti.
Legtöbbször pl. a tr-t meg lehet spórolni, mert a shell is tudja amire használod (és 99%, hogy olcsóbb shellben, mint a fork/exec-es tr-rel); illetve pl. a sed is tud ilyet (\u, \l, \U, \L és \E módosítók)
A kérdés nyilván az, hogy mennyire primitív szintig megyünk le egy eszköz funkcionalitásának kihasználásába. Itt átírtam amit lehet kizárólag shell eszközökre - illetve ahol nincs stabilan működő (*) , ott is lehet spórolni:
if [ $blockLineCount -le "$((${#statusTable}-2))" ];
### showStatus="<object title=$statusTable>$(echo "${statusTable:0:1}" | tr '[:lower:]' '[:upper:]')</object>
showStatus="${statusTable:0:1}" # we need the first character only
showStatus="${showStatus^}" # in UPPER CASE
showStatus="<object title=$statusTable>${showStatus}</object>"
else
### showStatus="$(echo "$statusTable" | tr '[:lower:]' '[:upper:]' | sed -e 's/\(.\)/\1<BR>/g')"
showStatus="$(echo "$statusTable" | sed -e 's/\(.\)/\u\1<BR>/g')" # put <BR> after each character and convert them to UPPER CASE
fi
(*) a kód : a=alma ; echo "${a//?/\0<BR>}" - ezzel 3 baj van: csak a ksh-nál van dokumentálva, csak a ksh-ban működik, és szerintem nem \0, hanem \1 kéne oda :-)