Assuming a variable contains spaces, newlines, and tabs followed by some text, why does this:
${var#'${var%%[![:space:]]*}'} # strip var of everything # but whitespace # then remove what's left # (i.e. the whitespace) from var
remove the white space and leave the text, but this:
${var##[:space:]*} # strip all whitespace from var
does not?
If I set
var=' This is a test ', both your suggestions do not work; just the leading stuff is removed. Why not use the replace functionality that removes all occurrences of whitespace and not just the first: