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 [:glob:extglob]: This also works in KornShell, without needing the explicit extglob setting: There are many, many other ways to do this, using sed for instance: These are not necessarily the best, but they're known to work. # Bash
shopt -s extglob
x=${x##+([[:space:]])} x=${x%%+([[:space:]])}
shopt -u extglob
# ksh
x=${x##+([[:space:]])} x=${x%%+([[:space:]])}
# POSIX, suppress the trailing and leading whitespace on every lines
x=$(echo "$x" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')