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(以及一般而言的编程/脚本)非常陌生,所以如果这是一个琐碎的问题,请原谅我! (这对我来说并不平凡,我无法通过谷歌搜索找到适当的答案。)
答案 0 :(得分:0)
如果您要确切说明myProgram
是什么,那么提出一个好的解决方案可能会更容易。你实现了吗?
是否已证明它要求所有文件都在一个目录中?
如果您这样调用程序会怎样?
myProgram directoryA/inputA directoryB/inputB directoryC/inputC
如果myProgram
要求所有文件都在同一目录中,则可以编写一个脚本来创建一个临时目录,将工作目录更改为该临时目录,然后在其中复制所有文件,然后执行myProgram inputA inputB inputC
,离开临时目录并删除它,包括所有内容。
如果文件系统允许,也可以在临时目录中创建符号链接,而不是复制文件。
您可能会实现将脚本这样调用
myScript directoryA/inputA directoryB/inputB directoryC/inputC
如果程序需要驻留在这些目录中的所有文件,则可以使用dirname
和find
列出directory[ABC]
中的所有文件。否则,您必须指定如何找出所有文件中的哪个是inputA_helperfile1
等。
您可能必须处理重复的文件名。如果例如inputA_helperfile1
和inputB_helperfile1
实际上是具有不同内容的相同文件名,您无法将两个文件都复制到同一目录中。