如何验证arg是否是Shell中的有效文件名?

时间:2009-09-19 18:08:39

标签: file shell verification

我需要验证args是否是有效的文件名,这是正确的方法吗?看起来我在内联2中犯了一些错误,但我不知道在哪里。

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

3 个答案:

答案 0 :(得分:2)

首先,在结束方括号前需要一个空格。如果文件名中有空格,您应引用变量。

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

else continue”是不必要的,除非这是您计划代替“continue”的其他内容的占位符。

答案 1 :(得分:1)

这是一个简洁的解决方案,即使文件名包含空格也可以使用:

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

请注意,for语句假定命令行参数,不需要输入更多。测试命令是if .. then .. fi

的简短方法

答案 2 :(得分:0)

-f检查$ {i}是否是常规文件。