Differences between revisions 9 and 11 (spanning 2 versions)
Revision 9 as of 2008-07-17 15:56:11
Size: 1107
Editor: wsip-68-15-32-50
Comment:
Revision 11 as of 2008-11-22 14:08:55
Size: 1108
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
There's also a solution using [:glob:extglob]: There's also a solution using [[glob|extglob]]:

How can I trim leading/trailing white space from one of my variables?

There are a few ways to do this:

   #POSIX, but fails if the variable contains newlines
   read -r var << EOF
   $var 
   EOF 

One can also achieve in bash using a herestring

   # Bash still fails if the variable contains a newline.
   read  -r x <<< "$x"

(note: using IFS=$' \t' read -d "" -r x partially fix the "problem" of the newlines but adds a trailing \n)

There's also a solution using extglob:

   # Bash
   shopt -s extglob
   x=${x##+([[:space:]])} x=${x%%+([[:space:]])}
   shopt -u extglob

This also works in KornShell, without needing the explicit extglob setting:

   # ksh
   x=${x##+([[:space:]])} x=${x%%+([[:space:]])}

There are many, many other ways to do this, using sed for instance:

   # POSIX, suppress the trailing and leading whitespace on every lines
   x=$(echo "$x" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

These are not necessarily the best, but they're known to work.

BashFAQ/067 (last edited 2018-11-29 15:32:42 by GreyCat)