在某个目录($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
最佳答案
正如问题所描述的那样,这样做就可以了:
bin/executable < inputfiles/input > output/output
如果问题真的是bin/executable
在当前目录中创建文件,而不允许用户指定输入输出文件,那会有点更复杂。您可能想要做的是:
cd output
ln -s ../inputfiles/input
../bin/executable
rm input
这将从 output
目录中创建一个指向 inputfiles/input
的符号链接(symbolic link),然后将其删除。如果您想消除与 output
目录中的文件发生冲突的可能性,那么您需要创建一个临时目录,其中包含类似 TMPDIR = $(mktemp -d)
的内容,在那里做所有事情,然后将其复制回 $OLDPWD/output
。
关于linux - 将输入和输出文件所需的 PATH 传递给 bash 中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958722/