如何从Bash中的字符串中删除前导空格

How to remove leading whitespace from a string in Bash

本问题已经有最佳答案,请猛点这里访问。

例如,我有一个字符串,"some string",我想把"some string"放在另一个字符串变量中。 我怎么做?

我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function get_title() {
    t1=$(get_type"$1")
    t2="ACM Transactions"
    t3="ELSEVIER"
    t4="IEEE Transactions"
    t5="MIT Press"
    if ["$t1"=="$t2" ];
        then
        title=$(less"$1" | head -1)
    elif ["$t1"=="$t5" ];
    then
        title=$(less"$1" | head -3)
    fi
    echo"$title"
}

正如您所看到的,$ title可以在中心对齐文本中的文本前面返回不需要的空格。 我想防止这种情况。


一种强大而直接的方法是使用sed,例如

1
$ sed 's/^[[:space:]]*//' <<<"$var"

如果你愿意打开扩展的globbing(shopt -s extglob),那么下面将从$ var中删除初始空格:

1
"${var##+([[:space:]])}"

例:

1
2
var=$' \t abc \t ' echo"=${var##+([[:space:]])}="
=abc   =