Linux Bash 脚本 - 将参数中的小写路径与实际文件系统路径匹配
Linux Bash Script - match lower case path in argument with actual filesystem path
我有一个 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
我不知道实际的区分大小写的路径,所以我需要以某种方式从传递给脚本的参数中确定它。我完全不知道从哪里开始,所以非常感谢任何帮助。
编辑以提供更多信息和清晰度
更新
感谢@anubhava 的回答,我使用了以下内容:-
#!/bin/bash
copies=1
if [ ! -z "" ]; then
copies=
fi
find / -readable -ipath 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
正在进行向下翻译。
$( ... )
位将所附命令的结果放入字符串中。
如果您不确定您的 "lower case" 字符串是否可信,您可以在任一侧进行翻译...
我会为此雇用awk
(当然没有薪水)
#!/bin/bash
awk -varg="" -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"
您可以使用 find
的 -ipath
选项来忽略大小写路径匹配:
# assuming $arg contains path argument supplied
find . -ipath "*$arg*"
我有一个 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
我不知道实际的区分大小写的路径,所以我需要以某种方式从传递给脚本的参数中确定它。我完全不知道从哪里开始,所以非常感谢任何帮助。
编辑以提供更多信息和清晰度
更新
感谢@anubhava 的回答,我使用了以下内容:-
#!/bin/bash
copies=1
if [ ! -z "" ]; then
copies=
fi
find / -readable -ipath 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
正在进行向下翻译。$( ... )
位将所附命令的结果放入字符串中。如果您不确定您的 "lower case" 字符串是否可信,您可以在任一侧进行翻译...
我会为此雇用awk
(当然没有薪水)
#!/bin/bash
awk -varg="" -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"
您可以使用 find
的 -ipath
选项来忽略大小写路径匹配:
# assuming $arg contains path argument supplied
find . -ipath "*$arg*"