我正在检查字符串是否包含通配符。
这是我失败的尝试:
#!/bin/bash
WILDCARDS='* . ? ! ] ['
a="foo*bar"
for x in $REJECTED_WILDCARDS
do
if [[ "$a" == *"$x"* ]]
then
echo "It's there!";
fi
done
有什么建议吗?
最佳答案
将通配符设置为bash数组,如下所示
wildcards=( '*' '.' '?' '|' ']' '[' )
那么
a="foo*bar"
for wildcard in "${wildcards[@]}";
do
if [[ $a == *"${wildcard}"* ]];
then
echo 'yes';
fi;
done