Bash 获取重复输出

Bash 获取重复输出,bash,scripting,sh,Bash,Scripting,Sh,我正在尝试编写一个bash脚本,它在一个目录中查找一个文件,并将其替换为源目录中同名的文件。当我运行find命令时,它似乎在设置我的$path两次 用于f内置res/$1/*.png;做 file=“$(basename“$f”)” echo“在$TMP中查找$file” path=“$(查找$TMP-类型f-名称“$file”)” 如果[-z$path]];然后 echo“在$TMP中找不到$file” 其他的 echo“将$path处的文件替换为$file” 回显“\uuuu路径\uuuuu

我正在尝试编写一个bash脚本,它在一个目录中查找一个文件,并将其替换为源目录中同名的文件。当我运行
find
命令时,它似乎在设置我的
$path
两次

用于f内置res/$1/*.png;做
file=“$(basename“$f”)”
echo“在$TMP中查找$file”
path=“$(查找$TMP-类型f-名称“$file”)”
如果[-z$path]];然后
echo“在$TMP中找不到$file”
其他的
echo“将$path处的文件替换为$file”
回显“\uuuu路径\uuuuu”
echo$path
回声--“
fi
完成
运行此循环的一次迭代会输出如下结果

Replacing file at tmp/trx//images/background/background_iphone5.png
tmp/trx//images/background_iphone5.png with background_iphone5.png
__path__
tmp/trx//images/background/background_iphone5.png tmp/trx//images/background_iphone5.png
---
请注意路径是如何重复自身的,并且在路径之间留有一个空格。为什么会发生这种情况


另一个注意事项是,为什么路径中也会出现
/
?这似乎不是问题,更重要的是好奇

如果仔细观察,这不是同一条路径:

tmp/trx//images/background/background_iphone5.png tmp/trx//images/background_iphone5.png
-->

这是
find
的结果输出,它在
/tmp
的不同子目录中找到两个同名文件

仅供参考,如果您想控制
find
下降到细分曲面的深度,有一个选项:

-最大深度级别

在命令行参数下面的大多数目录级别(非负整数)下降-maxdepth 0表示仅将测试和操作应用于命令行参数

或者,如果您只需要一个结果,您可以使用

-退出

马上离开。不会让任何子进程继续运行,但不会处理命令行上指定的更多路径。例如,
find/tmp/foo/tmp/bar-print-quit
将只打印
/tmp/foo


如果仔细观察,这不是同一条路径:

tmp/trx//images/background/background_iphone5.png tmp/trx//images/background_iphone5.png
-->

这是
find
的结果输出,它在
/tmp
的不同子目录中找到两个同名文件

仅供参考,如果您想控制
find
下降到细分曲面的深度,有一个选项:

-最大深度级别

在命令行参数下面的大多数目录级别(非负整数)下降-maxdepth 0表示仅将测试和操作应用于命令行参数

或者,如果您只需要一个结果,您可以使用

-退出

马上离开。不会让任何子进程继续运行,但不会处理命令行上指定的更多路径。例如,
find/tmp/foo/tmp/bar-print-quit
将只打印
/tmp/foo


这两次不是同一条路。这是两条不同的路径。双
/
可能直接来自
TMP
的值;它是如何设置的?您可能想用数组替换
path
path=($(find$TMP-type f-name“$file”)
,它允许您测试返回的匹配数
[${path[@]}-gt 1]&处理倍数…
谢谢@DavidC.Rankin。我只是在争论,是忽略受骗者,还是以某种方式处理他们。我想你刚刚回答了这个问题debate@Chris,您确实不能忽略它们,因为您需要某种方法来隔离要复制的文件,等等。。至少对于一个数组,如果您不以某种奇特的方式处理它们,您可以始终只使用
${path[0]}
:p
这两次不是相同的路径。这是两条不同的路径。双
/
可能直接来自
TMP
的值;它是如何设置的?您可能想用数组替换
path
path=($(find$TMP-type f-name“$file”)
,它允许您测试返回的匹配数
[${path[@]}-gt 1]&处理倍数…
谢谢@DavidC.Rankin。我只是在争论,是忽略受骗者,还是以某种方式处理他们。我想你刚刚回答了这个问题debate@Chris,您确实不能忽略它们,因为您需要某种方法来隔离要复制的文件,等等。。至少对于一个数组,如果你不以某种奇特的方式处理它们,你总是可以只使用
${path[0]}
:p
我想我只需要第二组眼睛就可以意识到它在查找多个文件。谢谢你,对了,我们所有人都是这样的=)我想我只需要第二双眼睛就可以意识到它在查找不止一个文件-uu u-。谢谢你,对了,我们大家都是这样