从bash变量中删除空格

时间:2008-11-27 16:27:49

标签: bash

假设变量包含空格,换行符和制表符后跟一些文本,为什么会这样:

${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

没有?

4 个答案:

答案 0 :(得分:27)

如果我设置了var=" This is a test ",那么您的建议都不起作用; 只是领先的东西被删除。 为什么不使用替换功能来删除所有出现的空格而不仅仅是第一个:

 ${var//[[:space:]]}

答案 1 :(得分:4)

[:space:]是一个角色类。它只有嵌套在另一组[]。

中才有效

答案 2 :(得分:1)

flolo的答案记录在bash手册页的“参数替换”部分。另一个文档来源是Parameter SubstitutionAdvanced 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"