Size: 871
Comment: remove the loop add a solution with read and here strings
|
Size: 883
Comment: posix solution with a here string
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
There are a few ways to do this -- none of them elegant. First, the most portable way would be to use `sed`: |
There are a few ways to do this |
Line 8: | Line 5: |
# POSIX x=$(echo "$x" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') |
#POSIX read -r var << EOF $var EOF |
Line 12: | Line 11: |
One can also achieve the same goal using Bash builtins: | One can also achieve in bash (and ksh93) using a herestring |
Line 36: | Line 35: |
There are many, many other ways to do this. These are not necessarily the best, but they're known to work. | There are many, many other ways to do this, using sed for instance: {{{ # POSIX x=$(echo "$x" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') }}} These are not necessarily the best, but they're known to work. |
How can I trim leading/trailing white space from one of my variables?
There are a few ways to do this
#POSIX read -r var << EOF $var EOF
One can also achieve in bash (and ksh93) using a herestring
# Bash # Remove leading whitespace: read -r x <<< "$x"
There's also a solution using [:glob: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 x=$(echo "$x" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
These are not necessarily the best, but they're known to work.