我有一个Linux脚本获取传递给它的参数,源自MSDOS(实际上DOSEMU运行MS DOS 6.22)。 获得通过的参数是不区分大小写的(因为DOS没有这样做),但是当然是Linux。
我试图从以下通过的论点中获得
/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd
至
/media/zigg4/vol1/Database/SCAN/STALBANS/DOCPRINT/Wp23452.WPD
我不知道实际的区分大小写的path,所以我需要以某种方式从传递给脚本的参数中确定它。 我绝对不知道从哪里开始,所以任何帮助,不胜感激。
编辑额外的信息和清晰度
UPDATE
感谢@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
很好的工作:-)
您可以使用-ipath
选项来find
忽略大小写路径匹配:
# assuming $arg contains path argument supplied find . -ipath "*$arg*"
我会雇用awk
(当然没有工资)
#!/bin/bash awk -varg="$1" -vactual="/media/zigg4/vol1/Database/SCAN/STALBANS/DOCPRINT/Wp23452.WPD" 'BEGIN{ if (tolower(arg)==tolower(actual)){ printf "Argument matches actual filepath\n" } }'
运行脚本
./script "/media/zigg4/vol1/database/scan/stalbans/docprint/wp23452.wpd"
像这样的东西:
if [ "$( echo $real | tr AZ az )" = "$lower" ]; then echo "matchy" else echo "no is matchy" fi
一些说明:
tr
正在做一个更低的翻译。
$( ... )
位将所包含命令的结果放入一个字符串中。
如果您不确定您的“小写”字符串是否可以信任,您可以在任一方执行翻译…