bash:for ... 循环中的错误行为以及测试语句

标签 bash testing echo

我正在尝试测试在文本文件列表中调用的某些文件是否位于某个目录中。每隔一段时间(我很确定我每次都使用相同的语句)我会收到一个错误,提示找不到 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

事实就这么多。以下语句让我测试给定目录中所有文本文件中调用的所有文件是否实际上是目录/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 想要提示“A Comment”行(实际上是“行”)不是一个文件,但是为什么会导致找不到 echo 呢?同样,大多数情况下 这有效,但我经常遇到此错误。非常感谢任何帮助。

最佳答案

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

关于bash:for ... 循环中的错误行为以及测试语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17648585/

相关文章:

spring - MockBean stub 无效

ruby-on-rails - 使用 role_model 和 Factory_Girl(用于规范测试),如何正确地将用户设置为管理员?

reactjs - 如何在 Jest 中测试模拟函数的返回值

linux - "Command not found"当输出存储在变量中时管道变量被剪切

Vim文字着色

linux - mkdir $variable/$variable2 不起作用

regex - Mac OS X 上的 grep/ack 查找多个字符串并尊重文件类型

bash - 计算 bash 中的(非空白)代码行数

path - 回声 "example"|剪辑,添加不需要的换行符

python - Bash 命令仅在第一次执行