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

时间:2016-01-14 12:01:38

标签: regex bash

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

:while
IF EXIST proceed.txt goto :break
echo "Waiting to check for file"
ping -n 11 127.0.0.1 > nul
goto :while
:break

$ SCHEMA_ONLY_CLAUSE现已填充:

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

1 个答案:

答案 0 :(得分:6)

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

  

${parameter/pattern/string}

     

模式替换。扩展模式以生成模式,就像在路径名扩展中一样。扩展参数,并将模式与其值的最长匹配替换为字符串。如果模式以/开头,则模式的所有匹配都将替换为字符串。通常只替换第一场比赛。如果模式以#开头,则它必须在参数的扩展值的开头匹配。如果模式以%开头,则它必须在参数的扩展值的末尾匹配。如果string为null,则删除pattern的匹配,并且可以省略/跟随模式。如果参数为@*,则替换操作依次应用于每个位置参数,并且扩展是结果列表。如果parameter是一个使用@*下标的数组变量,则替换操作将依次应用于数组的每个成员,并且扩展是结果列表。

也就是说,${something//,/}已扩展为$something,并且已删除所有,次。