例如,在空目录中尝试以下命令:
$ for i in *; do echo $i; done
*
有没有办法抑制*
的打印输出?
答案 0 :(得分:5)
设置nullglob
shopt -s nullglob
for i in *; do echo "$i"; done
答案 1 :(得分:1)
基本思路是使用ls命令,但如果filename有空格,ls
将按空格分割文件名。为了处理文件名中的空间,你可以这样做:
ls|while read i; do echo $i; done
Aleks-Daniel Jakimenko说“不要解析ls”。哪个好,所以如果我们不想改变nullglob怎么样:
for i in *; do [ -e "$i" ] && echo $i; done
答案 2 :(得分:-1)
要避免*
,您可以尝试类似
for i in `ls`; do echo $i; done
现在尝试在一个空目录上,没有给出输出......