1

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

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

3 回答 3

2

首先,在右方括号之前需要一个空格。如果文件名中有空格,你应该引用你的变量。

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

else continue”是不必要的,除非它是您打算用来代替“”的其他东西的占位符continue

于 2009-09-19T18:14:29.917 回答
1

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

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

请注意,for 语句假定命令行参数,无需输入更多。测试命令是 if .. then .. fi 的一种简短方式

于 2009-09-20T03:19:45.950 回答
0

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

于 2009-09-19T18:11:44.330 回答