LinuxBash脚本-将参数中的小写路径与实际文件系统路径匹配

LinuxBash脚本-将参数中的小写路径与实际文件系统路径匹配,linux,bash,sh,case-sensitive,Linux,Bash,Sh,Case Sensitive,我有一个linux脚本,它得到一个来自MSDOS的参数(实际上是运行MS DOS 6.22的DOSEMU)。传递的参数不区分大小写(DOS不区分大小写),但Linux当然不区分大小写 我试图从下面通过的论点中得出结论 /media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd 到 我不知道实际的区分大小写的路径,所以我需要通过传递给脚本的参数来确定它。我完全不知道从哪里开始,所以非常感谢任何帮助 编辑以获得更多信息和清晰度 更新

我有一个linux脚本,它得到一个来自MSDOS的参数(实际上是运行MS DOS 6.22的DOSEMU)。传递的参数不区分大小写(DOS不区分大小写),但Linux当然不区分大小写

我试图从下面通过的论点中得出结论

/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd

我不知道实际的区分大小写的路径,所以我需要通过传递给脚本的参数来确定它。我完全不知道从哪里开始,所以非常感谢任何帮助

编辑以获得更多信息和清晰度

更新

感谢@anubhava的回答,我使用了以下内容:-

#!/bin/bash

copies=1
if [ ! -z "$2" ]; then
  copies=$2
fi

find / -readable -ipath $1 2>&1 | grep -v "Permission denied" | while IFS= read -r FILE; do
    lpr -o Collate=True -#$copies -sP $FILE
done
很好用:-)

类似这样的东西:

if [ "$( echo $real | tr A-Z a-z )" = "$lower" ]; then 
    echo "matchy"
else
    echo "no is matchy"
fi
一些注意事项:

  • tr
    正在进行较低的翻译

  • $(…)
    位将封闭命令的结果放入字符串中

  • 如果您不确定您的“小写”字符串是否可信,您可以在任意一侧进行翻译


  • 我会为此雇用
    awk
    (当然没有薪水)

    按以下方式运行脚本:

    ./script "/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd"
    

    您可以使用
    find
    -ipath
    选项忽略案例路径匹配:

    # assuming $arg contains path argument supplied
    find . -ipath "*$arg*"
    

    将两个路径转换为小写,然后compare@anubhava谢谢你的评论。也许我的问题不清楚。我不知道第二条路。这就是我根据传递给脚本的参数试图找到的,所以现在这个脚本将在linux或DOS下运行?linux-背景是我试图在DOS中实现网络打印:-)我创建了一个批处理文件,该文件以文件名作为参数。这个dos批处理文件执行了一些逻辑,并创建了一个Linux路径,该路径很好,但大小写不正确。我将这个变量传递到我的Linux脚本中,然后使用lpr打印到用户选择的网络打印机上。我不确定这是否是我所需要的。第一行暗示(对我来说)我知道两个变量$雷亚尔和美元更低。实际上我只知道传递给脚本的参数是多少。我想找的是真实的美元。嗨,山姆,谢谢你的回答。看来我原来的问题不清楚,所以我为浪费你的时间道歉。我不知道真正的路径,只知道它的一个不区分大小写的版本。这是我试图获得的区分大小写的版本。完美。Thank:-)@l0ckm4:值得注意的是find提供了一些不区分大小写的匹配选项,如iname、ipath、iregex等。gnu find手册页建议使用
    -iwholename
    而不是
    -ipath
    ./script "/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd"
    
    # assuming $arg contains path argument supplied
    find . -ipath "*$arg*"