Bash “是什么意思?”${1#*-}”;在狂欢节上
存在如下的if条件Bash “是什么意思?”${1#*-}”;在狂欢节上,bash,Bash,存在如下的if条件 if [ "${1#*-}" = "$1" ]; then echo "Do something" fi 但是有人能解释一下${1}*-}的含义吗?${1}*-}删除*-中最短的匹配项,这是$1变量中的一个球状模式 例如,abcdef xyz foo->xyz foo 如果您的检查确实: if $1 does not contain '-' *-是与后跟-的字符串(可能为空)匹配的模式。#操作符从扩展的$1中删除匹配*-的最短前缀。例如: $ foo="123-45
if [ "${1#*-}" = "$1" ]; then
echo "Do something"
fi
但是有人能解释一下${1}*-}
的含义吗?${1}*-}
删除*-
中最短的匹配项,这是$1
变量中的一个球状模式
例如,abcdef xyz foo
->xyz foo
如果您的检查确实:
if $1 does not contain '-'
*-
是与后跟-
的字符串(可能为空)匹配的模式。#
操作符从扩展的$1
中删除匹配*-
的最短前缀。例如:
$ foo="123-456"
$ echo "${foo#*-}"
456
$ foo="123-456-789"
456-789
我之所以强调shortest,是因为有一个伴随操作符##
,它会删除最长的匹配前缀
$ echo "${foo##*-}"
789
如果参数1中没有“-”
,则进行此测试
见此:
test=jhonatan
if [ "${test#*-}" = "$test" ]; then
echo "yes" ;
else
echo "no" ;
fi
此打印为是,因为在字符串测试中没有“-”
用这个
test=jhonatan-piffer
相同的脚本打印号
${variable#pattern}
删除字符串的前缀模式
在最后一种情况下,从开始到“-”
结果:
"piffer"
而“皮弗”
不同于“乔纳坦皮弗”
有关更多信息,请阅读以下内容:
我在下面的答案中遗漏了这个关键词,这就是你在bash中所说的
感谢大家参与这个问题。
"piffer"