Bash 如何在检查shell脚本中的文件名时启用区分大小写

Bash 如何在检查shell脚本中的文件名时启用区分大小写,bash,shell,sh,Bash,Shell,Sh,我想使用shell脚本检查文件是否存在。我使用下面的代码。 如果我有TEST.png或TEST.png,则为“如果条件成功”和“找到打印文件”的文件名。但我想为文件检查启用区分大小写。请让我知道如何在shell脚本中启用区分大小写 file="/mnt/floppy/test.png" if [ -f "$file" ] then echo "File found" else echo "Invalid file"

我想使用shell脚本检查文件是否存在。我使用下面的代码。 如果我有TEST.png或TEST.png,则为“如果条件成功”和“找到打印文件”的文件名。但我想为文件检查启用区分大小写。请让我知道如何在shell脚本中启用区分大小写

    file="/mnt/floppy/test.png"
    if [ -f "$file" ]
    then
         echo "File found"

    else
         echo "Invalid file" 
    fi     
您可以使用grep:

file="/mnt/floppy/test.png"
echo $file | grep [A-Z] && echo "Invalid file: Filename has uppercase letters" && exit 1
# echo file | grep [a-z] && echo "Valid file"
您可以使用grep:

file="/mnt/floppy/test.png"
echo $file | grep [A-Z] && echo "Invalid file: Filename has uppercase letters" && exit 1
# echo file | grep [a-z] && echo "Valid file"

看看VFAT的区分大小写安装选项:

check=s
:严格,区分大小写

check=r
:松弛,不区分大小写

check=n
:正常,默认设置,当前不区分大小写



来源:

看看VFAT的区分大小写安装选项:

check=s
:严格,区分大小写

check=r
:松弛,不区分大小写

check=n
:正常,默认设置,当前不区分大小写



来源:

Shell/bash实际上根据默认值区分大小写根据您尝试检查的文件路径判断,您正在处理不区分大小写的文件系统,可能VFAT.Shell/bash实际上根据默认值区分大小写根据您尝试检查的文件路径判断,您正在处理不区分大小写的文件系统,可能是VFAT。此外(因为肯定有人会提到这一点),您可以使用POSIX字符类
[[:upper:]
[[:lower:]]
而不是
[A-Z]
[A-Z]
<代码>大小写$file in*[A-Z]*)回显大写;;esac——但问题似乎在于查找文件是否存在,而不管变量中的文件名大小写如何,这是一个相当困难的问题。此外(因为有人一定会提到这一点),您可以使用POSIX字符类
[[:upper:][]
[:lower:][]
,而不是
[a-Z]
[a-z]
。您可以完全在shell中完成此操作<代码>大小写$file in*[A-Z]*)回显大写;;esac——但问题似乎在于查找文件是否存在,而不管变量中文件名的大小写变化,这是一个相当困难的问题。