从 shell 脚本中的字符串中去除文本

Strip text from string in shell script

我在一个大而重要的 SH 文件中有以下变量,我需要从变量中删除一些数据并只保留部分文本。

我得到带有 link 的“repoTest”到内部 git 回购,我需要变量“nameAppTest”仅接收最后一个“/”之后的常量数据。

示例:

我得到: repoTest="ssh://git@code.br.repo.local/code/ecsb/name-repo.git"

我尝试拆分: nameAppTest=$(echo "$repoTest"|cut -d'/' -f5|sed -e 's/.git//g')

我得到的响应: echo "$nameAppTest" (ecsb).

我希望收到的内容: name-repo

我这样试过但失败了:nameAppTest=$(echo "$repoTest"|cut -d'/' -f5|sed -e 's/.git//g')

这是一个绝妙的技巧:

nameAppTest=$(basename "$repoTest" .git)

使用 basename 仅获取 URL 的最后一个组件,并一步去除所有扩展名。

您也可以使用sh参数扩展分两步完成,无需任何外部程序:

# Remove everything up to and including the last /
temp="${repoTest##*/}"
# Remove the trailing .git
nameAppTest="${temp%.git}"