Bash回声和动作顺序

时间:2010-12-27 22:02:22

标签: bash echo

我创建了一个bash脚本来查找与模式匹配的文件,如果找到则复制它们。 我的想法基本上是:

  • 回声“开始”
  • 在此处列出文件
  • Echo“找到了一个”
  • 复制
  • 到下一个测试它
  • 回声“完成”

但基本上我得到的是脚本正在完成它的工作,并在每个相关文件的最后回显一个“找到的”,好像我的脚本正在处理所有请求然后回应,而不是遵循我尝试的顺序有。我究竟做错了什么 ?谢谢!

1 个答案:

答案 0 :(得分:2)

基于这些非常少量的信息,您的问题可能是从“语法错误”到“最终无法理解shell脚本如何工作”的整个范围。 然而,由于这是一个“答案”,我试着回答你的问题。如果预计的任务只是“查找与模式匹配的文件,并在找到时复制它们”,那么已经有一个命令可以执行此操作:

$ find ./ -name "m*a*tch" -exec cp {} <destination> \;

'find'根据模式查找文件,然后它可以做很多事情,一个例子是运行bash命令。 “-exec”之后的字符串可以是任何shell命令(多个),甚至是对现有shell脚本的调用。该行必须以“\;”结束。 “{}”表示模式找到的文件名,其中filename表示文件的整个路径。

一个普遍的想法:如果你需要在linux上做一些事情,那么一个命令很可能已经完成了,所以从阅读文档开始,你可以在收集知识的同时节省大量的工作。