我需要验证参数是否是有效的文件名,这是正确的方法吗?我似乎在内联2中犯了一些错误,但我不知道在哪里。如何验证arg是否是Shell中的有效文件名?
for i in ${@}; do
if [ -f ${i}]; then
echo ${i}
else continue
fi
done
我需要验证参数是否是有效的文件名,这是正确的方法吗?我似乎在内联2中犯了一些错误,但我不知道在哪里。如何验证arg是否是Shell中的有效文件名?
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;做...; DONE – 2009-09-19 19:21:06
-f检查$ {i}是否为普通文件。
这里是一个简洁的解决方案,它的工程,即使文件名包含空格:
for i
do
test -f "$i" && echo "$i"
done
注意for语句假设命令行参数,则无需键入更多。测试命令是一个简短的方法,如果..然后.. fi
查看我更新的答案。 – 2009-09-19 18:22:13