【问题标题】:Pass input and output files desired PATH to a binary in bash将所需的 PATH 输入和输出文件传递给 bash 中的二进制文件
【发布时间】:2011-12-19 00:18:10
【问题描述】:

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

【问题讨论】:

  • 您能否编辑您的问题以显示您的命令现在如何工作,以及您希望它如何工作。祝你好运。
  • 好的,我做到了,希望现在更清楚

标签: linux file bash scripting


【解决方案1】:

正如问题描述的那样,这样就可以了:

bin/executable < inputfiles/input > output/output

如果问题真的是bin/executable当前目录创建文件而不允许用户指定输入和输出文件,那会稍微复杂一些。您可能想要做的是:

cd output
ln -s ../inputfiles/input
../bin/executable
rm input

这将从output 目录中创建一个指向inputfiles/input 的符号链接,然后稍后将其删除。如果您想消除与output 目录中的文件发生冲突的可能性,那么您需要创建一个类似TMPDIR = $(mktemp -d) 的临时目录,在那里执行所有操作,然后将其复制回$OLDPWD/output

【讨论】:

  • 是的,它可以读取输入文件,但第一个问题是它无法读取“输入”目录中的“data.txt”文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多