【发布时间】:2011-03-21 17:44:00
【问题描述】:
好吧,突然发生了一些有趣的事情。本次测试
for i in `cat /mnt/usb/liste.txt `; do [ -f /mnt/usb/lsdvd.xml/$i ] || echo $i; done
以前可以正常工作(对于文件 liste.txt 中的每个条目,尝试查找相应的目录,如果找不到则打印名称)并用于生成丢失的目录名称。现在这个命令产生
echo: command not found
echo: command not found
echo: command not found
(...)
我尝试使用 [[...]] 和 "test" 而不是 "[ ..]" 但无济于事。
有什么想法在我不注意的时候与我心爱的 bash 发生了什么:)?
谢谢, 克里斯蒂安。
编辑(设置 -x 输出):
(...)
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_GHOST_WRITER.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_IMAGINARIUM_OF_DOCTOR_PARNASSUS.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_INFORMANT.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_INTERNATIONAL.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_MEN_WHO_STARE_AT_GOATS.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_OTHER_MAN.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_QUEEN.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_READER.lsdvd.xml ']'
+ for i in '`cat /mnt/usb/liste.txt`'
+ '[' -f /mnt/usb/lsdvd.xml/THE_REBOUND.lsdvd.xml ']'
+ $'\302\240echo' THE_REBOUND
+ '[' -x /usr/lib/command-not-found ']'
+ /usr/bin/python /usr/lib/command-not-found -- $'\302\240echo'
echo: command not found
+ return 127
(...)
【问题讨论】:
-
你有没有尝试双引号
$i? -
如果将行尾替换为
echooooo $1; done,是否会报错echooooo: command not found?当我在 bash 命令提示符下键入 junk 时,我得到了“找不到命令”错误。如果换成/bin/echo会怎样? -
将
set -x添加到脚本的顶部并观察shell 执行的每个命令。 -
我的发现:双引号 $i:无济于事,同样的错误。 echoooo:找不到命令。