#!/bin/dash -vx trim() { # remove leading whitespace characters __trim="${*#${*%%[![:space:]]*}}" # remove trailing whitespace characters printf "%s" "${__trim%${__trim##*[![:space:]]}}" } trim " alpha" | od -t x1a + trim alpha + __trim= + printf %s + od -t x1a 0000000 trim "beta " | od -t x1a + trim beta + __trim= + printf %s + od -t x1a 0000000 trim " gamma " | od -t x1a + trim gamma + __trim= + printf %s + od -t x1a 0000000 trim2() { # remove leading whitespace characters __trim="${*##[[:space:]]}" # remove trailing whitespace characters printf "%s" "${__trim%%[[:space:]]}" } trim2 " alpha" | od -t x1a + trim2 alpha + __trim= alpha + printf %s alpha + od -t x1a 0000000 20 61 6c 70 68 61 sp a l p h a 0000006 trim2 "beta " | od -t x1a + trim2 beta + __trim=beta + printf %s beta + od -t x1a 0000000 62 65 74 61 20 b e t a sp 0000005 trim2 " gamma " | od -t x1a + trim2 gamma + __trim= gamma + printf %s gamma + od -t x1a 0000000 0d 67 61 6d 6d 61 09 cr g a m m a ht 0000007 trim3() { _space=$(echo -n '\b\t\n\v\f\r') # remove leading whitespace characters __trim="${*##$_space}" # remove trailing whitespace characters printf "%s" "${__trim%%$_space}" } trim2 " alpha" | od -t x1a + trim2 alpha + __trim= alpha + printf %s alpha + od -t x1a 0000000 20 61 6c 70 68 61 sp a l p h a 0000006 trim2 "beta " | od -t x1a + trim2 beta + __trim=beta + printf %s beta + od -t x1a 0000000 62 65 74 61 20 b e t a sp 0000005 trim2 " gamma " | od -t x1a + trim2 gamma + __trim= gamma + printf %s gamma + od -t x1a 0000000 0d 67 61 6d 6d 61 09 cr g a m m a ht 0000007