BASH包含,不区分大小写

时间:2014-11-14 02:40:24

标签: linux bash case-sensitive

在BASH中如何判断字符串是否包含另一个字符串,忽略大写或小写。

示例:

if [[ $FILE == *.txt* ]]
then
   let FOO=1;
fi

无论$ FILE的值是高,低还是混合,我都希望这句话是真实的。

1 个答案:

答案 0 :(得分:1)

在使用FILE进行测试之前,一种方法是将lower-case转换为tr

lowerFILE="$( tr [A-Z] [a-z] <<<"$FILE" )"

if [[ $lowerFILE == *.txt* ]]
then
  let FOO=1;
fi

示例:

#!/bin/bash

for FILE in this.TxT that.tXt other.TXT; do 
    lowerFILE="$( tr [A-Z] [a-z] <<<"$FILE" )"
    [[ $lowerFILE == *.txt* ]] && echo "FILE: $FILE ($lowerFILE) -- Matches"
done

<强>输出:

FILE: this.TxT (this.txt) -- Matches
FILE: that.tXt (that.txt) -- Matches
FILE: other.TXT (other.txt) -- Matches