2

我只是在尝试下面的代码,但它不起作用..请建议更正此代码..

echo abc.txt | while read name; do find . -name $name; done

输出成功:./rak/abc.txt

echo 'abc.txt pqr.txt' | while read name; do find . -name $name; done

输出错误:查找:0652-009 缺少连词

echo "abc.txt pqr.txt" | while read name; do find . -name $name; done

输出错误:查找:0652-009 缺少连词

同样的错误

echo "abc.txt" "pqr.txt" | while read name; do find . -name $name; done
echo 'abc.txt' 'pqr.txt' | while read name; do find . -name $name; done

请建议如何解决这个问题...

4

1 回答 1

4

问题是多个条目作为一行发送到管道中,读取将两个字符串拾取到name然后处理$name包含这两个字符串的内容。

你应该使用类似的东西:

echo -e "abc.txt\npqr.txt" | while read name; do find . -name $name; done

即用换行符分隔项目。

您应该尝试使用echo "'$name'"而不是使用来调试find它,它会暗示正在发生的事情。

此外,我会在查找中使用引用来引用$name,好像文件名的名称中应该有一个空格,那么您将收到与您最初遇到的相同的错误消息。

于 2012-07-03T09:57:39.320 回答