从 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}"
我在一个大而重要的 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}"