剪切字符串的第一部分,其中包含bash中的“/”

时间:2017-09-22 08:56:54

标签: git bash

在bash脚本中,我想剪切一个分支名称。 分支名称总是如下:guard let vc = storyboard?.instantiateViewController(withIdentifier: "nameVC") else { return } // add to current view view.addSubview(vc.view) 我想剪切origin/X.X.X-name部分,以便我可以使用origin/

这就是我的尝试:

X.X.X-name

输出为TEST=origin/1.1.1-name echo "${TEST//origin/}"; 如何使用与我现在所做的相同的方法在开始时摆脱/1.1.1-name。我不喜欢开始切割等。

1 个答案:

答案 0 :(得分:4)

只需在bash

中使用参数扩展即可
test=origin/1.1.1-name

printf "%s\n" "${test##*/}"
1.1.1-name

从子字符串删除下的Parameter-expansion documentation开始。

  

${PARAMETER##PATTERN}

     

此表单用于删除描述的模式,尝试从字符串的开头匹配它。操作员#将尝试删除与模式匹配的最短文本,而##尝试使用最长文本匹配执行此操作。

您还可以使用正则表达式运算符bash提供(相对较新版本的bash)来匹配字符串。

[[ $test =~ /(.*)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"

当然,您也可以使用第三方shell实用程序,例如使用cut

cut -d/ -f2 <<<"$test"

意味着使用去限制器/剪切第二个字段(-f2)。