如果使用Bash将目录设置为空,则不显示结果

时间:2013-12-13 21:48:28

标签: bash shell

例如,在空目录中尝试以下命令:

$ for i in *; do echo $i; done
*

有没有办法抑制*的打印输出?

3 个答案:

答案 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

现在尝试在一个空目录上,没有给出输出......