我正在检查字符串是否包含通配符。
这是我失败的尝试:

#!/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

08-05 10:31