Shell脚本:如何从Bash变量中删除空格

10

可能重复的问题:
如何从Bash变量中删除空白?

我已经搜索并尝试了许多解决方案,但似乎没有一个适用于我的情况...

我有一个Shell变量,由于前导和尾随空格而导致问题。如何使用Shell脚本在单行中去除所有空格呢?

2个回答

19

我能想到两个选项:

variable="  gfgergj lkjgrg  "
echo $variable | sed 's,^ *,,; s, *$,,'
否则
nospaces=${variable## } # remove leading spaces
nospaces=${variable%% } # remove trailing spaces

4
nospaces=${variable// } 在我的 Bash 中实际上是删除变量的前导和尾随空格。 - tzelleke
8
nospaces=${variable// }会删除所有空格。 - blue01
2
nospaces=${variable// }可以移除所有空格。 - gammay
第二个选项最多只会删除一个空格。这个方法相当冗长,仅适用于bash,但非常高效,也可以处理制表符、换行符等。 - Gene Pavlovsky

1

有很多方法可以实现,awk oneliner:

kent$  echo "    foo  -  -  -  bar   "|awk '{sub(/^ */,"",$0);sub(/ *$/,"",$0)}1'
foo  -  -  -  bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接