我需要验证 args 是否是有效的文件名,这是正确的方法吗?好像我在第 2 行中犯了一些错误,但我不知道在哪里。
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
我需要验证 args 是否是有效的文件名,这是正确的方法吗?好像我在第 2 行中犯了一些错误,但我不知道在哪里。
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
请注意,for 语句假定命令行参数,无需输入更多。测试命令是 if .. then .. fi 的一种简短方式
-f 检查 ${i} 是否为常规文件。