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

如何在Bash中删除字符串的前导空格,bash,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 tit

例如,我有一个字符串“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"
}

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

一种稳健而直接的方法是使用sed,例如

例如:

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

具体来说,请看第三个代码块(“如何仅删除前导空格”),哦,谢谢。我没有检查那个问题,因为我不想完全删除空白@calebbrinkman您还可以在正则表达式中使用捕获组,以避免启动
sed
[$var=~[[:space:][]*(.*)]]和&var=${BASH\u REMATCH[1]}
 "${var##+([[:space:]])}"
var=$' \t abc \t ' echo "=${var##+([[:space:]])}="
=abc   =