从不同目录调用myProgram的输入

时间:2018-11-22 15:20:49

标签: bash shell scripting

myProgram将三个文件作为输入,如下所示:

$ myProgram inputA inputB inputC

并说这些输入本身位于带有一些其他文件的各自目录中:

directoryA
  inputA
  inputA_helperfile1
  inputA_helperfile2
directoryB
  inputB
  inputB_helperfile1
  inputB_helperfile2
directoryC
  inputC
  inputC_helperfile1
  inputC_helperfile2

myProgram将无法正常运行,除非所有三个输入以及这些其他文件(依赖关系?这是对吗?)都位于同一目录中。但是我不想将所有这些文件放入同一目录中以执行myProgram。有这种情况的解决方法吗?

我对bash(以及一般而言的编程/脚本)非常陌生,所以如果这是一个琐碎的问题,请原谅我! (这对我来说并不平凡,我无法通过谷歌搜索找到适当的答案。)

1 个答案:

答案 0 :(得分:0)

如果您要确切说明myProgram是什么,那么提出一个好的解决方案可能会更容易。你实现了吗? 是否已证明它要求所有文件都在一个目录中? 如果您这样调用程序会怎样?

myProgram directoryA/inputA directoryB/inputB directoryC/inputC

如果myProgram要求所有文件都在同一目录中,则可以编写一个脚本来创建一个临时目录,将工作目录更改为该临时目录,然后在其中复制所有文件,然后执行myProgram inputA inputB inputC ,离开临时目录并删除它,包括所有内容。

如果文件系统允许,也可以在临时目录中创建符号链接,而不是复制文件。

您可能会实现将脚本这样调用

myScript directoryA/inputA directoryB/inputB directoryC/inputC

如果程序需要驻留在这些目录中的所有文件,则可以使用dirnamefind列出directory[ABC]中的所有文件。否则,您必须指定如何找出所有文件中的哪个是inputA_helperfile1等。

您可能必须处理重复的文件名。如果例如inputA_helperfile1inputB_helperfile1实际上是具有不同内容的相同文件名,您无法将两个文件都复制到同一目录中。