2013-12-13 58 views

回答

0

爲了避免*,你可以嘗試像

for i in `ls`; do echo $i; done 

現在試圖在一個空目錄,沒有任何給定的輸出...

+0

如果文件名有空間,你會返回錯誤的名稱 – PasteBT

+3

不解析'' ls'' http://mywiki.wooledge.org/ParsingLs –

2

基本思想是用ls命令,但是如果文件名有空間,ls將按空格拆分文件名。爲了處理文件名中的空間,你可以這樣做:

ls|while read i; do echo $i; done 

Aleks-Daniel Jakimenko說:「不要分析ls」。這是很好的,所以如果我們不希望這個怎麼樣改變了nullglob:

for i in *; do [ -e "$i" ] && echo $i; done 
+0

感謝您的快速回答。 – user2847598

+0

這不會處理文件名中的換行符,只是偏執;-) – iruvar

+0

@ 1_CR,你是對的,由於知道nullglob – PasteBT

5

nullglob

shopt -s nullglob 
for i in *; do echo "$i"; done 
+0

你忘記引用''「$ i」'' –

+0

@ Aleks-DanielJakimenko,謝謝,已完成 – iruvar