如果存在,则使用Bash删除后缀

时间:2017-03-27 19:57:52

标签: bash

我将有一个变量(让我们称之为$name),它可以遵循下列模式之一;

foo
foo-green
foo-blue
foo-bar
foo-bar-green
foo-bar-blue

Bash中最轻的一种方式是剥离-green-blue后缀(如果存在),其余部分保持不变?

3 个答案:

答案 0 :(得分:3)

Parameter substitution

name="${name%-green}"
name="${name%-blue}"

答案 1 :(得分:2)

使用extglob,您只需一步即可完成此操作:

# utility function to strip green or blue from end of string
cstrip() { shopt -s extglob; echo "${1%-@(green|blue)}"; }

# use it as
cstrip 'foo-bar-blue'
foo-bar

cstrip 'foo-bar-green'
foo-bar

cstrip 'foo-blue'
foo

cstrip 'foo-bar'
foo-bar

答案 2 :(得分:1)

使用bash:

[[ $name =~ (.*)(-green|-blue) ]] && name="${BASH_REMATCH[1]}"
echo "$name"