2013-07-15 26 views
1

我試圖測試某些文件,在文本文件列表中調用,是否在某個目錄中。每隔一段時間(我確信每次都使用相同的語句)出現錯誤,抱怨找不到echo命令。 20130715.txt比如今天:bash:錯誤行爲for ...循環與測試語句

我在我的目錄/audio/playlists/的TEXTFILES根據它們所應該使用的日期命名

[email protected]:/some/dir# ls /audio/playlists/ 
20130715.txt 20130802.txt 20130820.txt 20130907.txt 20130925.txt 
20130716.txt 20130803.txt 20130821.txt 20130908.txt 20130926.txt 
(...) 

[email protected]:/some/dir# cat /audio/playlists/20130715.txt 
#A Comment line goes here 
00:00:00 141-751.mp3 
00:03:35 141-704.mp3 
00:06:42 140-417.mp3 
00:10:46 139-808.mp3 
00:15:13 136-126.mp3 
00:20:26 071-007.mp3 
(...) 
23:42:22 136-088.mp3 
23:46:15 128-466.mp3 
23:50:15 129-592.mp3 
23:54:29 129-397.mp3 

這麼多的事實。下面的語句,這讓我test如果所有的一切在給定的目錄中TEXTFILES的呼籲文件實際上在目錄/audio/mp3/的文件時,會產生一個錯誤:

[email protected]:/some/dir# for i in $(cat /audio/playlists/*.txt|cut -c 10-16|sort|uniq); do [ -f "/audio/mp3s/$i.mp3" ] || echo $i; done 
 echo: command not found 
[email protected]:/some/dir# 

bash希望抱怨「A評論」 - 行(實際上" line ")不是一個文件,但爲什麼會導致echo不被發現?再次,主要是這個工程,但每隔一段時間我會得到這個錯誤。任何幫助是極大的讚賞。

+0

嘗試用'/ bin/echo'替換'echo' – Antarus

+0

檢查'file/audio/playlists/20130715.txt'的輸出;我懷疑DOS線的結局。嘗試引用('echo「$ i」')。 – chepner

+0

下面的答案是否解決了您的問題? –

回答

3

echo之前的空格不是U + 0020,而是U + 00A0。實際上,命令" echo"不存在。

+0

您使用哪個編輯器查看這些字符? – Antarus

+0

@Antarus:不知道。 –

+0

呃,那你怎麼弄出來的? – Antarus