我正在使用一个命令行应用程序(geth
),它接受参数--password
,它需要一个包含密码的文件的有效路径,即:< / p>
geth --password /some/path/to/password/file
我正在尝试在命令行上指定密码(我知道安全隐患)而不是将其保存在文件中,例如:
geth --password `echo P@ssWordHer3`
以上操作不起作用,因为geth
正在搜索名为P@ssWordHer3
的文件,该文件不存在:
致命:无法读取密码文件:打开P @ ssWordHer3:没有这样的文件 或目录
我正在考虑创建一个接受密码作为参数并输出它的shell脚本,但我想它也不起作用,因为geth
会尝试阅读文件内容而不是输出。
知道如何解决这个问题吗?
答案 0 :(得分:2)
这就是称为process substitution的ksh和bash功能用于:
#!/usr/bin/env bash
# ^^^^- also works on ksh, but not on baseline-POSIX /bin/sh
geth --password <(echo 'P@sswordHer3')
<(...)
扩展将替换为文件名,当读取时,将返回其中包含的代码的输出。
请注意,这是一个FIFO(命名管道或/dev/fd/...
- 样式名称,具体取决于操作系统),因此它只能读取一次,从前到后,并且不允许寻求或重读。
如果你需要一个真实的文件,而不是一个FIFO,zsh(我个人不推荐)也有一个扩展:
#!/usr/bin/env zsh
geth --password =(echo 'P@sswordHer3')