如何在shell脚本中删除字符串的最后n个字符[duplicate]

zed5wv10  于 2023-02-05  发布在  Shell
关注(0)|答案(1)|浏览(140)
    • 此问题在此处已有答案**:

Extract filename and extension in Bash(38个答案)
5天前关闭。
我在Shell脚本(bash)中有一个变量reponame,其中包含一个字符串

echo $reponame
"testrepo.git"

我想删除此字符串的最后4个字符,并将结果赋给新变量repo

echo $repo
"testrepo"

我该怎么做呢?

3lxsmp7m

3lxsmp7m1#

如果我理解正确的话,您希望去掉.git扩展,那么正确的表达式应该是

repo=${reponame%.*}

repo=${reponame%.git}

为那个特殊的案子。
对于一般的子字符串,删除最后4个字符的表达式如下所示

repo=${reponame:0:-4}

关于Bash字符串操作的非常好的资源:https://tldp.org/LDP/abs/html/string-manipulation.html
对于shell,通常可以使用各种方法,例如

repo=$(echo -n "$reponame" | sed 's/\.git$//')

repo=$(echo -n "$reponame" | rev | cut -f 2- -d '.' | rev)

相关问题