我需要验证如果参数是有效的文件名,这是做正确的方式?好像我做了一些错误的直列,但我不知道在哪里。

for i in ${@}; do                                   
if [ -f ${i}]; then                             
    echo ${i}
else continue
fi
done
有帮助吗?

解决方案

首先,需要右方括号前的空间。你应该引用您的变量的情况下,有一个文件名的空间。

for i in "${@}"; do 
if [ -f "${i}" ]; then
    echo "${i}"
else continue
fi
done

在“else continue”是不必要的,除非这对你计划落实到位“continue”别的东西的占位符。

其他提示

下面是一种简洁的解决方案,其工作方式,即使文件名包含空格:

for i
do
    test -f "$i" && echo "$i"
done

请注意的是,为语句假定命令行参数,也没有必要对键入更多。测试命令是,如果短的路..然后..网络

-f将检查$ {I}是一个普通文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top