如何将包含 mongod 参数的文本文件通过管道传输到 mongod 命令

如何将包含 mongod 参数的文本文件通过管道传输到 mongod 命令

因此,我通常使用两个参数来启动 mongod 进程,如下所示

~$ mongod --dbpath /media/0CB6-189A/linux/mongodb/data --logpath /media/0CB6-189A/linux/mongodb

但我不想每次都指定参数,所以我将它们保存到一个名为mongo.txt以下内​​容的文本文件中。

--dbpath /media/0CB6-189A/linux/mongodb/data --logpath /media/0CB6-189A/linux/mongodb

然后我cat把该文件并通过管道传输,mongod像这样

~$ cat mongod.txt | mongod

但它不起作用,仍然使用参数的mongod默认值,另一个参数也是如此。有人知道我该如何实现这一点吗?/data/db--dbpath

答案1

Ubuntu 和所有安装了 GNU 实用程序的 Linux 发行版都具有xargs,它允许使用从另一个命令传输的参数或从 stdin 提供的参数来运行命令。对于您的情况,您需要执行以下操作:

xargs  mongod < mongo_args.txt

这里有mongo_args.txt包含参数的文本文件,它被重定向到stdinxargs它将与一起连接mongod并作为完整命令运行。

答案2

您走的路是对的,但您正试图通过管道传输 的输出cat mongod.txt。管道传输并不意味着输出将作为参数添加。相反,当您通过管道传输数据时,接收程序必须知道如何处理通过管道传输的数据。

例如,如果我们有banana.txt文本测试

  1. cat banana.txt | echo
    • 输出为空行
  2. echo "$(cat banana.txt)"
    • 测试作为输出

我们不是要求通过管道bash来评估cat banana.txt,而是要求在执行之前立即将其插入那里echo

虽然有成千上万的实际示例,但您需要使用管道的一些示例是使用grepsed和等工具dd。查看“bash 管道”、“bash 评估/扩展”等内容标准输入

相关内容