Here's how to strip leading and/or trailing spaces from a string with Bash:
Simple Method Using echo:
~$ T=" x y " ~$ T="$(echo -n $T)" ~$ echo "1${T}2" 1x y2 ~$
Use xargs, whose default command is /bin/echo, if your string is from standard input.
Complicated Method:
~$ shopt -s extglob ~$ T=" X " ~$ T="${T%%*( )}" ~$ echo "1${T}2" 1 X2 ~$ T="${T##*( )}" ~$ echo "1${T}2" 1X2 ~$To remove all types of whitespace, replace the space with
[[:space:]]
to look like this:
$ T="${T%%*([[:space:]])}"
The construct: *(pattern-list)
requires the
exglob
option to be enabled. The constructs:
${parameter##word}
&
${parameter%%word}
are expansions to remove a matching prefix/suffix respectively.
Updated: .