假设变量包含空格,换行符和制表符后跟一些文本,为什么会这样:
${var#"${var%%[![:space:]]*}"} # strip var of everything
# but whitespace
# then remove what's left
# (i.e. the whitespace) from var
删除空格并留下文字,但是:
${var##[:space:]*} # strip all whitespace from var
没有?
答案 0 :(得分:27)
如果我设置了var=" This is a test "
,那么您的建议都不起作用;
只是领先的东西被删除。
为什么不使用替换功能来删除所有出现的空格而不仅仅是第一个:
${var//[[:space:]]}
答案 1 :(得分:4)
[:space:]是一个角色类。它只有嵌套在另一组[]。
中才有效答案 2 :(得分:1)
flolo的答案记录在bash手册页的“参数替换”部分。另一个文档来源是Parameter Substitution的Advanced Bash-Scripting Guide部分。 ABS指南包含基本文档和优秀的示例代码。
答案 3 :(得分:0)
$(echo $ var)
怎么样?> a=" 123 456 " ; a2="$(echo $a)" ; echo "a=\"${a}\" a2=\"${a2}\""
a=" 123 456 " a2="123 456"