微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

regex – bash控制语句//,/ double forward slash

在这个例子中//,/是什么意思?

for SCHEMA_ONLY_DB in ${SCHEMA_ONLY_LIST//,/}
do
    SCHEMA_ONLY_CLAUSE="$SCHEMA_ONLY_CLAUSE or datname ~ '$SCHEMA_ONLY_DB'"
done

SCHEMA_ONLY_LIST="mydb1,mydb2,mydb3,mydb4"
SCHEMA_ONLY_DB=mydb1

$SCHEMA_ONLY_CLAUSE现已填充:

echo $SCHEMA_ONLY_CLAUSE
or datname ~ 'mydb1' or datname ~ 'mydb2' or datname ~ 'mydb3'

解决方法

从bash(1)手册页( http://linux.die.net/man/1/bash):

${parameter/pattern/string}

Pattern substitution. The pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. If pattern begins with /,all matches of pattern are replaced with string. normally only the first match is replaced. If pattern begins with #,it must match at the beginning of the expanded value of parameter. If pattern begins with %,it must match at the end of the expanded value of parameter. If string is null,matches of pattern are deleted and the / following pattern may be omitted. If parameter is @ or *,the substitution operation is applied to each positional parameter in turn,and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *,the substitution operation is applied to each member of the array in turn,and the expansion is the resultant list.

也就是说,${something //,/}被扩展为$something,其中包含所有出现的内容,已删除.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐