1

我正在尝试测试在文本文件列表中调用的某些文件是否在某个目录中。每隔一段时间(我很确定我每次都使用相同的语句)我得到一个错误,抱怨echo找不到命令。

我目录/audio/playlists/中的文本文件是根据它们应该使用的日期命名的:20130715.txt例如今天:

me@computer:/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
(...)

me@computer:/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如果在给定目录中的所有文本文件中调用的所有文件实际上是目录中的文件,以下语句/audio/mp3/会产生错误:

me@computer:/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
me@computer:/some/dir#

猜想 bash抱怨“评论”行(实际上" line ")不是文件,但为什么会导致echo找不到呢?同样,这主要是可行的,但我经常会收到此错误。任何帮助是极大的赞赏。

4

1 回答 1

3

前面那个空格echo不是U+0020,而是U+00A0。事实上,该命令" echo"不存在。

于 2013-07-15T07:15:50.680 回答