/ / déclaration de contrôle bash //, / double barre oblique - regex, bash

instruction de contrôle bash //, / double barre oblique - regex, bash

Que signifie //, / dans ce cas?

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 a maintenant été peuplé avec:

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

Réponses:

4 pour la réponse № 1

Du bash(1) page de manuel (http://linux.die.net/man/1/bash):

${parameter/pattern/string}

Substitution de modèle. Le motif est développé pour produire un motif comme dans l’extension du nom de chemin. Le paramètre est développé et la correspondance la plus longue du motif avec sa valeur est remplacée par une chaîne. Si le motif commence par /, toutes les correspondances de modèle sont remplacées par une chaîne. Normalement, seul le premier match est remplacé. Si le motif commence par #, il doit correspondre au début de la valeur étendue du paramètre. Si le motif commence par %, il doit correspondre à la fin de la valeur étendue du paramètre. Si la chaîne est nulle, les correspondances de modèle sont supprimées et les / le modèle suivant peut être omis. Si le paramètre est @ ou *, l’opération de substitution est appliquée à chaque paramètre de position et l’expansion est la liste résultante. Si paramètre est une variable de tableau indexée avec @ ou *, l'opération de substitution est appliquée à chaque membre du tableau à son tour, et le développement correspond à la liste résultante.

C'est, ${something//,/} est étendu à la $something avec toutes les occurrences de , enlevé.