首页 > 解决方案 > 运行带有输入/输出参数的 bash 命令,但将它们作为不在磁盘中的变量提供

问题描述

我想在 bash 中运行一个命令,例如./command -i INPUT_FILE -o OUTPUT_FILE它需要两个参数,1)输入文件的路径和 2)输出文件的路径。它处理INPUT_FILE并将结果写入OUTPUT_FILE. 有什么方法可以提供INPUT_FILEandOUTPUT_FILE作为一些变量吗?因此,我不想将文件存储在磁盘中,而是将它们作为变量提供/存储在内存中。请注意,输出写在提供的文件路径中,而不是 stdout(否则,很明显)。在命令的核心中,它ofstream以 C 语言打开以将结果写入OUTPUT_FILE.

我搜索并找到了输入部分的解决方案,该解决方案有效,但不适用于输出部分。这是建议的解决方案: ./command -i <(cat <<< "$INPUT_VARIABLE") -o OUTPUT_FILE

对输出部分有什么建议吗?我的最终目标是在 Python 中使用此功能,但似乎subprocess模块没有此功能。

标签: pythonbash

解决方案


您可以使用tmpfs它,这是一个位于 RAM 中的虚拟文件系统。

对于您当前的用户,您可以使用/run/user/$UID/目录,例如

./command -i <(cat <<< "$INPUT_VARIABLE") -o /run/user/$UID/OUTPUT_FILE

完全可以工作。如果在脚本停止后不需要该文件,只需 rm 即可。显然,该文件在重新启动后将无法生存。


推荐阅读