J'essaie de voir si une chaîne fait partie d'une autre chaîne dans le script Shell (#! Bin/sh).
Le code que j'ai maintenant est:
#!/bin/sh
#Test scriptje to test string comparison!
testFoo () {
t1=$1
t2=$2
echo "t1: $t1 t2: $t2"
if [ $t1 == "*$t2*" ]; then
echo "$t1 and $t2 are equal"
fi
}
testFoo "bla1" "bla"
Le résultat que je recherche, c'est que je veux savoir quand "bla" existe dans "bla1".
Merci et salutations,
MISE À JOUR: J'ai essayé à la fois la fonction "contient" comme décrit ici: Comment savoir si une chaîne contient une autre chaîne dans les scripts Unix Shell?
Ainsi que la syntaxe dans la chaîne contient dans bash
Cependant, ils semblent ne pas être compatibles avec le script Shell normal (bin/sh) ...
Aidez-moi?
En bash, vous pouvez écrire (notez que les astérisques sont extérieur les guillemets)
if [[ $t1 == *"$t2"* ]]; then
echo "$t1 and $t2 are equal"
fi
Pour/bin/sh, l'opérateur =
Sert uniquement à l'égalité et non à la correspondance de modèles. Vous pouvez cependant utiliser case
case "$t1" in
*"$t2"*) echo t1 contains t2 ;;
*) echo t1 does not contain t2 ;;
esac
Si vous ciblez spécifiquement Linux, je suppose que/bin/bash est présent.