Hi, DervishD wrote [2003/10/01]: > Hi all :)) > > I need to strip leading and trailing spaces from the contents of > a shell variable, and I need to do it portably, with a construct like > ${...%% } and with no loops. When I say 'portably' I mean using SuSv3 > constructs, not Zsh extensions. > > I've tried the obvious ${variable# } for stripping a single > space, but this needs a while loop, which I want to avoid (although > it seems to be portable): > > while [ "$variable" != "${variable# }" ] > do > variable="${variable# }" > done > > And the same with the '%' construct. Please note that I cannot > use '[[' for the test, since it must be portable, and this involves > exec'ing the 'test' binary for each space in the variable :(( > > If no solution is possible I'll use 'tr', because the shell code > must run in bash and zsh at least, but I really want it to be able to > run in any SuSv3 compliant shell. Why not variable=`echo "$variable" | sed -e 's/^ *//' -e 's/ *$//'` ? I'm not sure whether all versions of sed understand multiple "-e" arguments, so it might me necessary to use this: variable=`echo "$variable" | sed -e 's/^ *//' | sed -e 's/ *$//'` > Thanks a lot for your help :) > > Raúl Núñez de Arenas Coronado Ciao, Thomas -- Thomas Köhler Email: jean-luc@picard.franken.de | LCARS - Linux <>< WWW: http://jeanluc-picard.de | for Computers IRC: jeanluc | on All Real PGP public key available from Homepage! | Starships