嵌套参数替换在Zsh中起作用:
$ param=abc
# nested remove prefix ${...#a} and remove suffix ${...%c} =>
$ printf '%s\n' ${${param#a}%c}
# => b
POSIX中有没有等效的内容?
$ param=abc
$ printf '%s\n' ${${param#a}%c}
# => dash: 2: Bad substitution
# => sh: ${${param#a}%c}: bad substitution
# => bash: ${${param#a}%c}: bad substitution
答案 0 :(得分:1)
您可以使用expr
来提取所需前缀和后缀之间的文本。 (当然,这不是与嵌套表达式等效的通用目的,但确实可以解决您给定的问题。)
param=abc
expr "$param" : "a\(.*\)c"
:
的正则表达式匹配运算符expr
有两个参数:左参数是字符串,右参数是正则表达式。输出是\(...\)
组内匹配的任何内容。
答案 1 :(得分:0)
Bash没有,但你有许多其他工具可以完成工作。
cut -b2 <<< abc
tr -d ac <<< abc
sed s/[ac]// <<< abc
awk '$0=$2' FS= <<< abc
应该注意,参数替换不会缩放