如何在Linux shell脚本的变量中存储echo及其信息,而不丢失echo关键字

如何在Linux shell脚本的变量中存储echo及其信息,而不丢失echo关键字,linux,mongodb,shell,Linux,Mongodb,Shell,我正在运行一个特定的mongo命令,它没有出于某种原因将密码隐藏在ps中。在检查mongo社区后,他们要求我们通过echo命令将密码作为输入发送,从而隐藏ps上的密码 范例 echo mypassword | usr/bin/mongostat --quiet -u readonly --authenticationDatabase admin 现在,只要在mongostat命令的开头使用echo密码,这就可以了,但是当我将整个值作为字符串存储在变量中时,问题就出现了 password=&qu

我正在运行一个特定的mongo命令,它没有出于某种原因将密码隐藏在ps中。在检查mongo社区后,他们要求我们通过echo命令将密码作为输入发送,从而隐藏ps上的密码

范例

echo mypassword | usr/bin/mongostat --quiet -u readonly --authenticationDatabase admin
现在,只要在mongostat命令的开头使用echo密码,这就可以了,但是当我将整个值作为字符串存储在变量中时,问题就出现了

password="pass@123"
mongo_command="echo $password | usr/bin/mongostat --quiet -u readonly --authenticationDatabase admin"
$mongo_command
因此,当我执行上述脚本时,输出如下

pass@123 | /usr/bin/mongostat --quiet -u readonly --authenticationDatabase admin
它忽略echo关键字,仅在执行$mongo_命令时发送密码。那么,如何避免这种情况,并确保echo与密码一起使用,然后在mongo命令后面加上管道(|)符号,使其看起来如下图所示

echo Csco@123 | /usr/bin/mongostat --quiet -u readonly --authenticationDatabase admin
Enter password:
insert query update delete getmore command flushes mapped vsize  res faults qrw arw net_in net_out conn   set repl                time

谢谢

正在回显存储的cmd行,包括管道。请尝试
eval$mongo\u命令
。顺便说一句-前两个
usr/bin/mongostat
缺少一个前导
//code>Hi@Milag,前两个mongostat命令有一个类型错误。是的,我试着按照mongo_的命令进行评估=“eval echo$password | usr/bin/mongostat--quiet-u readonly--authenticationDatabase admin$mongo_命令在此之后,它工作了,非常感谢您。你能告诉我这个评估的作用吗。我在网上查过这件事,但不能完全理解。再次感谢@Milag的问答环节再次感谢:)