在某个目录($ PWD)中通过shell调用的bash脚本中,有一行需要调用位于$ PWD / bin的可执行文件,以便它读取位于$ PWD / inputfiles的输入文件结果输出文件存储在$ PWD / output中。
这可以实现吗?
PS:现在,如果我在
cd /home/user
我做
./run config.inp output.dat
config.inp位于/ home / user
config.inp读取位于同一目录中的文件data.txt和lines.txt。
现在我想从/ home / user / input读取并将输出文件写入/ home / user / output
我试试
./run input/config.inp
它说
error, data.txt not found
答案 0 :(得分:1)
正如描述的问题所示,这样做:
bin/executable < inputfiles/input > output/output
如果问题确实是bin/executable
在当前目录中创建文件而不允许用户指定输入和输出文件,那么它会更复杂一些。你可能想要做的是:
cd output
ln -s ../inputfiles/input
../bin/executable
rm input
这将在inputfiles/input
目录中创建指向output
的符号链接,然后稍后将其删除。如果您想消除与output
目录中的文件冲突的可能性,那么您需要创建一个类似TMPDIR = $(mktemp -d)
的临时目录,在那里执行所有操作,然后将其复制回{{1 }}