将输入和输出文件所需的PATH传递给bash中的二进制文件

时间:2011-10-31 19:33:35

标签: linux file bash scripting

在某个目录($ 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

1 个答案:

答案 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 }}