你使用了已经使用了正确的语法,但可能是错误的 bash 版本
如果 bash --version 是 3.* 替换 extension="${extension,,}" 是 无效
extension="${extension,,}" 适用于 bash >= 4
for F in Aa.png Ab.PnG ;
do
extension="${F: -4}" ;
extension="${extension,,}" ;
echo $F : $extension ;
done
alternative 1:使用tr 来降低你的扩展名
extension=$( echo "${extension}"| tr "[:upper:]" "[:lower:]" )
备选方案 2:使用 find 和 -iname
find . -iname '*.pgn'
循环示例
for F in $( find . -iname '*.pgn' -print );
do
echo $F;
done
alternative 3:使用正则表达式匹配扩展名(感谢@Cyrus)
if [[ "$file" =~ \.[Pp][Gg][Nn]$ ]]
alternative 4 :通过设置选项 nocasematch 来改变 bash 的行为(感谢 @chepner)
shopt -s 启用 shopt -u 禁用
一个例子
file="a.PGn" ;
shopt -s nocasematch;
if [[ $file = *.pgn ]]; then
echo "PGN file";
fi;
shopt -u nocasematch;
if [[ $file = *.pgn ]]; then
echo "PGN file";
fi;