Je veux voir si une chaîne de caractères se trouve à l'intérieur une partie d'une autre chaîne.
par exemple :
'ab' in 'abc' -> true
'ab' in 'bcd' -> false
Comment puis-je faire cela dans un conditionnel d'un bash script ?
Je veux voir si une chaîne de caractères se trouve à l'intérieur une partie d'une autre chaîne.
par exemple :
'ab' in 'abc' -> true
'ab' in 'bcd' -> false
Comment puis-je faire cela dans un conditionnel d'un bash script ?
L'esprit [[
y "
:
[[ $a == z* ]] # True if $a starts with an "z" (pattern matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
[ $a == z* ] # File globbing and word splitting take place.
[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).
Comme l'a dit @glenn_jackman, mais gardez à l'esprit que si vous mettez tout le deuxième terme entre guillemets, le test passera à littéral correspondant.
Similaire à la réponse d'edwin, mais avec une portabilité améliorée pour posix et ksh, et un peu moins bruyant que celui de Richard :
substring=ab
string=abc
if [ "$string" != "${string%$substring*}" ]; then
echo "$substring IS in $string"
else
echo "$substring is NOT in $string"
fi
string=bcd
if [ "$string" != "${string%$substring*}" ]; then
echo "$string contains $substring"
else
echo "$string does NOT contain $substring"
fi
Sortie :
abc contains ab
bcd does NOT contain ab
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.