How to remove extra spaces in bash?
Try this:
echo "$HEAD" | tr -s " "
or maybe you want to save it in a variable:
NEWHEAD=$(echo "$HEAD" | tr -s " ")
Update
To remove leading and trailing whitespaces, do this:
NEWHEAD=$(echo "$HEAD" | tr -s " ")NEWHEAD=${NEWHEAD%% }NEWHEAD=${NEWHEAD## }
Take advantage of the word-splitting effects of not quoting your variable
$ HEAD=" how to remove extra spaces "$ set -- $HEAD$ HEAD=$*$ echo ">>>$HEAD<<<">>>how to remove extra spaces<<<
If you don't want to use the positional paramaters, use an array
ary=($HEAD)HEAD=${ary[@]}echo "$HEAD"
One dangerous side-effect of not quoting is that filename expansion will be in play. So turn it off first, and re-enable it after:
$ set -f$ set -- $HEAD$ set +f