通常,示例显示如下用法:
for i in $(ls); do echo ${i}; done
但是如果有一个名为“screw”的文件(或目录),则上面的行会给出错误的结果。
如何解决?
答案 0 :(得分:7)
不,请不要使用/解析ls
的输出。像这样使用它:
for i in *; do echo "${i}"; done
或者你可以使用printf
(感谢@ruakh):
printf '%s\n' *
答案 1 :(得分:0)
IFS="$(echo -e "\b\r")";
for f in $(ls); do
echo "$f";
done
如果你被迫坚持解析ls输出(你不应该)
答案 2 :(得分:0)
您始终可以使用find with print
find ./ -print | xargs echo