我需要验证args是否是有效的文件名,这是正确的方法吗?看起来我在内联2中犯了一些错误,但我不知道在哪里。
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
答案 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}是否是常规文件。