我将有一个变量(让我们称之为$name
),它可以遵循下列模式之一;
foo
foo-green
foo-blue
foo-bar
foo-bar-green
foo-bar-blue
Bash中最轻的一种方式是剥离-green
或-blue
后缀(如果存在),其余部分保持不变?
答案 0 :(得分:3)
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"