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

Sha*_*418 -1 bash

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

我的代码:

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"
}
Run Code Online (Sandbox Code Playgroud)

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

pea*_*eak 6

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

$ sed 's/^[[:space:]]*//' <<< "$var"
Run Code Online (Sandbox Code Playgroud)

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

 "${var##+([[:space:]])}"
Run Code Online (Sandbox Code Playgroud)

例:

var=$' \t abc \t ' echo "=${var##+([[:space:]])}="
=abc   =
Run Code Online (Sandbox Code Playgroud)

  • 您还可以在正则表达式中使用捕获组,以避免为`sed`启动新进程:`[[$ var =〜[[:space:]]*(.*)]] && var = $ {BASH_REMATCH [ 1]}` (2认同)